Skip to content

ES6 的函数有哪些变化? ​

箭头函数没有自己的 this、arguments 和 prototype,不能当构造函数。参数可以有默认值,剩余参数用 ...args 收成数组。

原理 ​

默认值在参数为 undefined 时才启用,传 null 不会触发默认值。默认值表达式每次调用都会重新求值,可以引用前面的参数。

剩余参数是真数组。arguments 是类数组,箭头函数里没有自己的 arguments,会向外找。新代码用剩余参数。

箭头函数的 this 在定义时沿外层确定,call 改不了它。适合回调。对象的方法如果需要动态 this,用方法简写,不要用箭头函数。

函数的 name 和默认参数、剩余参数会反映在 length 上:第一个默认参数之后的形参不计入 length。

追问 ​

默认参数和 || 怎么选?

value || fallback 会把 0、"" 也换成后备值。默认参数只替换 undefined。需要接受 0 时用默认参数或 ??。

箭头函数能当方法吗?

能调用,但 this 不是调用它的对象。写在对象字面量里的箭头函数,this 往往是外层或 undefined,不是这个对象。

易错点 ​

  • 默认参数不会把 null 当成缺省。
  • 箭头函数没有 prototype,new 会抛错。
  • 剩余参数必须是最后一个形参。

相关 ​