箭头函数与普通函数区别

239 阅读1分钟

无prototype属性

箭头函数没有原型,即没有prototype属性。

this由作用域链决定

在箭头函数被创建时,词法环境对象中的this来源于该作用域链上的this,也就是说箭头函数的this由作用域链决定,且在创建完成后this指向无法被改变(call,apply和bind也不能,因为箭头函数无内部方法[[call]])。

无法作为构造函数

由于箭头函数无内部方法[[construct]],所以无法作为构造函数。new箭头函数会抛出错误。

不能使用new.target

ES6新特性,new.target属性允许你检测函数或构造方法是否是通过new运算符被调用的。箭头函数不能使用这个特性。

参数名不能重复

普通函数非严格模式下参数可以重名,例如function test(a,a),而箭头函数不能这样,引擎会抛出错误。

无arguments属性

箭头函数中,在外层无普通函数或声明arguments标识符的情况下,试图访问arguments引擎会抛出错误。