js箭头函数(lambda表达式)和普通函数的区别

js箭头函数(lambda表达式)和普通函数的区别

区别从书写形式 -> 函数是否具名 -> 是否有arguments对象 -> 是否可以作为构造函数 -> this指向

书写形式不同

略。

函数匿名性

普通函数可以匿名或者具名,箭头函数只能匿名。

可否引用arguments

匿名函数不绑定arguments对象(可以使用剩余参数替代),普通函数绑定arguments。

可否作为构造函数

箭头函数不能作为构造函数。

为什么箭头函数不能作为构造函数?

因为普通函数有constructor,来自原型链(prototype)上。

箭头函数没有prototype,故而没有constructor,故而不能作为构造函数。

this指向不同

箭头函数this指向这个箭头函数被定义时所处的对象,如果没有对象则指向window,无法改变this指向。

普通函数this指向调用这个函数的对象(在构造函数中,this指向实例对象),如果没有调用对象则指向window,可以通过call,apply,bind改变this指向。

评论