箭头函数是ES6中新增的特性,下边将介绍它和传统函数的区别。
1.没有this、super、arguments和new.target的绑定
在箭头函数中,上边的值都有与箭头函数最近的非箭头函数
决定。
2.不能通过new关键字调用
箭头函数没有没有constructorf方法,所以就不能被用作构造函数,如果用new 关键字调用箭头函数,程序会抛出TypeError
。
let Test = () => 3
let b = new Test() //Uncaught TypeError: Test is not a constructor
3.没有原型
由于不可以通过关键字new
调用箭头函数,因此没有原型,所以也没有prototype这个属性。
4.不可以改变this的绑定
虽然箭头函数仍然可以调用call()、apply()、bind()
三种方法,但是箭头函数的this值不会受这三个函数的影响。
5.不支持arguments对象
箭头函数没有arguments对象的绑定,所以只能通过命名参数
和不定参数
两种形式访问函数的参数。但是箭头函数可以访问外围函数的arguments对象。
6.不支持重复的命名参数
无论在严格还是非严格模式,箭头函数都不支持重复命名的参数
,而在传统函数中,只有严格模式下,才不支持重复命名的参数。