Javascript 基础: 箭头函数与arguments

es6中箭头函数有无作用域,this指向,能否使用arguments,为什么?
更新于: 2021-12-19 12:57:29

关于箭头函数 与 arguments

  • 箭头函数有作用域(词法作用域),词法作用域简单来讲就是,一切变量(包括this)都根据作用域链来查找
  • 箭头函数中的this因为绑定了词法作用域,所以始终指向自身外的第一个this(由于自身没有声明this,所以会去作用域链上找this),也就是始终等于调用它的函数的this(以为这个this离它最近)。
  • 严格模式下不允许使用 arguments(规定),并且,普通函数里 arguments 代表了调用时传入的参数,但是箭头函数不是,箭头函数会把 arguments 当成一个普通的变量,顺着作用域链由内而外地查询(词法作用域)
  • arguments可以用...rest取代,所以完全没必要追求argument

看下 es6 的原文

thissupernew.target 都没有自己的,全都来自父作用域

An Arrow Function does not define local bindings for arguments, super, this, or new.target. Any reference to arguments, super, this, or new.target within an Arrow Function must resolve to a binding in a lexically enclosing environment. Typically this will be the Function Environment of an immediately enclosing function. Even though an Arrow Function may contain references to super, the function object created in step 4 is not made into a method by performing MakeMethod. An Arrow Function that references super is always contained within a non-ArrowFunctionand the necessary state to implement super is accessible via thescopethat is captured by the function object of the Arrow Function.

 

参考