2.箭头函数

根据追源溯本原则app

  • 箭头函数有什么优势?
  • 解决了什么问题?
  • 引入箭头函数有两个方面的做用:更简短的函数而且不绑定this。





  • 在ECMAScript 3/5中,经过将this值分配给封闭的变量,能够解决this问题。
  • 箭头函数不会建立本身的this,它只会从本身的做用域链的上一层继承this
  • 因为 箭头函数没有本身的this指针,经过 call() 或 apply() 方法调用一个函数时,只能传递参数(不能绑定this),他们的第一个参数会被忽略, bind一样
  • 箭头函数不绑定Arguments 对象,在大多数状况下,使用剩余参数是相较使用arguments对象的更好选择
  • 箭头函数表达式对非方法函数是最合适的
  • 箭头函数不能用做构造器,和 new一块儿用会抛出错误
  • 箭头函数没有prototype属性。
  • yield 关键字一般不能在箭头函数中使用(除非是嵌套在容许使用的函数内)。所以,箭头函数不能用做生成器。




箭头函数表达式的语法比函数表达式更简洁,而且没有本身的this,arguments,super或 new.target。这些函数表达式更适用于那些原本须要匿名函数的地方,而且它们不能用做构造函数。函数

语法:this

(参数1, 参数2, …, 参数N) => { 函数声明 }

//至关于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
(参数1, 参数2, …, 参数N) => 表达式(单一)

// 当只有一个参数时,圆括号是可选的:
(单一参数) => {函数声明}
单一参数 => {函数声明}

// 没有参数的函数应该写成一对圆括号。
() => {函数声明}

//加括号的函数体返回对象字面表达式:
参数=> ({foo: bar})

//支持剩余参数和默认参数
(参数1, 参数2, ...rest) => {函数声明}
(参数1 = 默认值1,参数2, …, 参数N = 默认值N) => {函数声明}

//一样支持参数列表解构
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f();  // 6
  • 参考MDN
相关文章
相关标签/搜索