JS箭头函数与普通函数的区别
-
语法差异:
- 普通函数:
function myFunction(parameters) { }- 箭头函数:
const myFunction = (parameters) => { } -
this关键字的绑定:这是普通函数和箭头函数之间最大的区别。在普通函数中,this的值是在运行时确定的,取决于函数是如何被调用的。在全局上下文中调用时,this指向全局对象(在浏览器中是window)。在对象方法中调用时,this指向调用该方法的对象。而在箭头函数中,this是在定义函数时绑定的,而不是在调用时。箭头函数中的this继承自包围它的非箭头函数。如果没有包围的非箭头函数,则this指向全局对象。 -
处理
arguments对象:在普通函数中可以使用特殊的arguments对象来访问所有传入的参数,即使函数声明中并未明确列出这些参数。在箭头函数中,没有arguments对象。 -
构造函数行为:普通函数可以用作构造函数,可以使用
new关键字创建新的对象。而箭头函数则不能用作构造函数,如果尝试这样做会抛出一个错误。 -
原型链:每个普通函数都有一个
prototype属性,当用作构造函数时,新创建的对象会从这个prototype属性继承属性和方法。而箭头函数没有prototype属性。 -
Yield 关键字的使用:普通函数可以用作生成器函数,可以在其中使用
yield关键字。而箭头函数不能用作生成器函数。