JavaScript 中常规函数和箭头函数之间的区别

javascriptfront end technologyobject oriented programming更新于 2025/11/21 11:56:17

根据 MDN,箭头函数表达式是常规函数表达式的语法紧凑替代方案,尽管它没有自己与 this、arguments、super 或 new.target 关键字的绑定。箭头函数表达式不适合用作方法,也不能用作构造函数。

JavaScript 中的常规函数​​和箭头函数有 3 个细微的差别。

没有自己的 this 绑定

箭头函数没有自己的 this 值。箭头函数内部的 this 值始终从封闭范围继承。

示例

this.a = 100;
let arrowFunc = () => {this.a = 150};
function regFunc() {
   this.a = 200;
}
console.log(this.a)
arrowFunc()
console.log(this.a)
regFunc()
console.log(this.a)

输出

100
150
150

可以看到箭头函数在其范围之外更改了 this 对象。常规函数只是在其自己的 this 内进行了更改。

箭头函数没有参数数组

在 JS 中,函数中的参数数组是一个特殊对象,可用于获取传递给函数的所有参数。与此类似,箭头函数没有自己的参数对象绑定,它们绑定到封闭范围的参数。

箭头函数可调用但不可构造

如果函数可构造,则可以使用 new 来调用它,即 new User()。如果函数可调用,则可以不使用 new 来调用它(即正常函数调用)。

通过函数声明/表达式创建的函数既可构造又可调用。

箭头函数(和方法)仅可调用。类构造函数仅可构造。

如果您尝试调用不可调用的函数或构造不可构造的函数,您将收到运行时错误。

let arrowFunc = () => {}
new arrowFunc()
This code gives the error:
arrowFunc is not a constructor

相关文章


有用资源