JS箭头函数与普通函数的区别

71 阅读1分钟

JS箭头函数与普通函数的区别

  1. 语法差异

    • 普通函数
    	function myFunction(parameters) { }
    
    • 箭头函数
     	const myFunction = (parameters) => { }
    
  2. this 关键字的绑定:这是普通函数和箭头函数之间最大的区别。在普通函数中,this 的值是在运行时确定的,取决于函数是如何被调用的。在全局上下文中调用时,this 指向全局对象(在浏览器中是 window)。在对象方法中调用时,this 指向调用该方法的对象。而在箭头函数中,this 是在定义函数时绑定的,而不是在调用时。箭头函数中的 this 继承自包围它的非箭头函数。如果没有包围的非箭头函数,则 this 指向全局对象。

  3. 处理 arguments 对象:在普通函数中可以使用特殊的 arguments 对象来访问所有传入的参数,即使函数声明中并未明确列出这些参数。在箭头函数中,没有 arguments 对象。

  4. 构造函数行为:普通函数可以用作构造函数,可以使用 new 关键字创建新的对象。而箭头函数则不能用作构造函数,如果尝试这样做会抛出一个错误。

  5. 原型链:每个普通函数都有一个 prototype 属性,当用作构造函数时,新创建的对象会从这个 prototype 属性继承属性和方法。而箭头函数没有 prototype 属性。

  6. Yield 关键字的使用:普通函数可以用作生成器函数,可以在其中使用 yield 关键字。而箭头函数不能用作生成器函数。