箭头函数的this、arguments详解

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也是一个道理。

posted @ 2021-01-16 12:19  暗恋桃埖源  阅读(825)  评论(0编辑  收藏  举报