js箭头函数(lambda表达式)和普通函数的区别
区别从书写形式 -> 函数是否具名 -> 是否有arguments对象 -> 是否可以作为构造函数 -> this指向
书写形式不同
略。
函数匿名性
普通函数可以匿名或者具名,箭头函数只能匿名。
可否引用arguments
匿名函数不绑定arguments对象(可以使用剩余参数替代),普通函数绑定arguments。
可否作为构造函数
箭头函数不能作为构造函数。
为什么箭头函数不能作为构造函数?
因为普通函数有constructor
,来自原型链(prototype)上。
箭头函数没有prototype
,故而没有constructor,故而不能作为构造函数。
this指向不同
箭头函数this指向这个箭头函数被定义时所处的对象,如果没有对象则指向window,无法改变this指向。
普通函数this指向调用这个函数的对象(在构造函数中,this指向实例对象),如果没有调用对象则指向window,可以通过call,apply,bind改变this指向。