1、箭头函数没有自己的this,arguments,super或new.target。
2、它的this、arguments都是在定义函数时绑定外层的this和arguments,而不是在执行过程中绑定的,所以不会因为调用者不同而发生变化。
3、箭头函数若想得到自身的入参列表arguments,必须使用剩余参数表示法。
4、箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
下面我们以arguments为例进行验证,this同理
var obj = {}; obj.fn = function(){ let arrow = (...args) =>{ console.log('入参列表 : ', arguments); //外层的入参列表 console.log('剩余参数 : ', args); //使用剩余参数表示法获得的自身入参列表 } arrow(4,5,6) } obj.fn(1,2,3)
以下是输出结果
入参列表 : Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]
剩余参数 : (3) [4, 5, 6]
由上述验证我们可以发现箭头函数arrow使用arguments获取入参列表时,实际上得到的是外层函数的arguments。而this也是一个道理。