es6基础-函数的新特性

es6函数新特性,在原来es5函数基础上增加了新的函数扩展,包括传参,默认值,扩展运算符...

函数参数

  1. 函数参数默认值
  • 函数参数默认值的执行顺序是随意的
  • 只有未传递参数,或者参数为undefined,才是使用默认值
 function ajax( url,method='get', timeout=2000,callback={}){}
  ajax('/url') // 使用默认的请求方式method、timeout和callback
  ajax('/url', 'post')  // 使用默认的请求方式timeout和callback
  ajax('/url', 'post', null, () => {})
  1. 函数参数默认值表达式
  • 除了使用具体的默认之外,还可以使用表达式构成
  • 可以使用之前的参数作为后面参数的默认值
  • 函数参数默认值存在在暂存死区,函数表达式中的参数,没有赋值无法作为其他参数的默认值
 function getValue() {
    return 5
 }
 function add(a, b=getValue()) {
   return a + b
 }
 function add(a, b=a) {
   return a + b
 }

  

剩余参数

es6中,当传递的参数无法确定时,可以使用剩余参数表示,剩余参数是把多个独立的参数合并到一个数组中去,剩余参数表示...args,而 在es5中,多个不确定的参数使用arguments来接收

  1. 具名参数只能放在剩余参数之前,否则会报错
 function rest(a, ...args) {
    console.log(a, args) // 1 [2,3,4]
  }
  rest(1, 2, 3, 4)

  

可扩展运算符

可扩展运算符能够将具有迭代属性的数据结构,展开分割为独立的元素

  • console.log(...[1,2,3])

new target属性

能够使用new target属性来判断函数是否利用new来进行调用的

function target() {
  if (new.target !== 'undefined') {console.log('通过new进行创建的')}
}

 

  与解构赋值默认值结合使用

   

function add ({x, y= 5 } = {}) {
    console.log(x + y)
}
add()

  * 在参数为对象时,参数的默认值,不仅要对对象进行解构赋值, 而且还要参数对象默认值,避免参数没有传递时报错

  

箭头函数

箭头函数是es6中更为简洁的书写方式,基本语法:参数 => 函数体

  1. 箭头函数的新特性
  • 没有this,super, arguments和new target的绑定
    • 箭头函数中的没有this有外围函数最近的一层非箭头函数决定
  • 不能通过new关键字调用
    • 箭头函数中没有contruct的方法,也就是构造器属性,因此不能够作为构造函数
  • 没有原型对象
    • 由于不可以通过new关键字调用构造函数,因为构造函数没有prototype这个属性
  • 不可改变this的绑定
    • 函数内部的this的值不可以改变,在函数的声明周期内始终保持一致
  • 不支持arguments对象
    • 箭头函数没arguments绑定只能通过命名函数和不定参数的形式来访问
  • 不支持重复命名参数
    • 箭头函数不支持重复命名参数
let reflect = value => value
let sum = (sum1, sum2) => num1 + num2
let sum = (sum1, sum2) => {
 return  num1 + num2
}
[空函数]
let doNothing = () =>{}
[返回对象字面量]
let getObj = (id) => ({id:id, name: name}) // 避免和函数{}混淆
  • 在经常使用的回调函数中使用{}形式,相当于使用return(map,filter),如果主函数不具有返回值就直接使用值(forEach)
  • let add = function(a, b) {
        return a+b
    }
    
    let add = (a, b) => a + b


     

转载于:https://www.cnblogs.com/kuishen/p/11077505.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值