外观
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会抛错。 - 剩余参数必须是最后一个形参。