何时不应在 JavaScript 中使用箭头函数

2025 年 3 月 18 日 | 6 分钟阅读

JavaScript 箭头函数没有 "this" 值或任何参数。不建议将其用作事件处理器、对象字面量方法或原型方法。如果函数应用了 arguments 对象,箭头函数将无法正常工作。声明箭头函数不需要 function 关键字,因为它不返回任何值。箭头函数不能用作构造函数。

不使用箭头函数的原因

在 JavaScript 中不使用箭头函数的三个原因。

  • 事件处理器
  • 对象方法
  • 原型方法
  • 使用 arguments 对象的函数

事件处理器

事件处理器不返回任何输入值,并且函数包含对象的数据。如果箭头函数不返回值,它会显示 undefined 值。

为什么事件处理器不使用箭头函数?

  • 事件处理器中的 "this.value" 函数总是返回 undefined 作为输出。
  • Web 浏览器中的全局对象是 window。值是 window 对象中缺失的一个属性。因此,window 对象将 value 属性添加到函数中。这些值由 JavaScript 引擎设置为 "undefined"。
  • 箭头函数没有特定的 "this" 值。周围的全局作用域用于 "this" 关键字的值。在下面的示例中,箭头函数中的 "this" 值指向全局对象。
  • 您可以改用标准函数来解决问题。当 "this" 值与其绑定时,元素充当事件的触发器。

示例

以下示例显示了使用箭头方法的 undefined 值。它不适用于箭头函数中的事件处理器方法。

输出

输出显示了 JavaScript 中的 undefined 值。

When You Should Not Use Arrow Functions in JavaScript

对象方法

原型方法使用函数来获取自身数据。this 关键字不适用于箭头函数。

示例

以下示例显示了使用箭头方法的 NaN 值。它不适用于箭头函数中的事件处理器方法。

输出

输出显示了 JavaScript 中的 NaN 值。

When You Should Not Use Arrow Functions in JavaScript

对象方法问题的解决方案

我们可以使用普通函数来处理对象函数方法。

示例

以下示例函数可以正常工作,没有错误。

输出

输出显示了函数的数据。

When You Should Not Use Arrow Functions in JavaScript

原型方法

原型方法使用函数来获取自身数据。多个函数不适用于箭头函数。

示例

以下示例显示了使用箭头方法的 undefined 值。它不适用于箭头函数中的原型方法。

输出

输出显示了 JavaScript 中的 undefined 值。

When You Should Not Use Arrow Functions in JavaScript

原型方法问题的解决方案

我们可以使用普通函数来处理原型函数方法。

示例

以下示例函数可以正常工作,没有错误。

输出

输出显示了函数的数据。

When You Should Not Use Arrow Functions in JavaScript

使用 arguments 对象的函数

箭头函数缺少 arguments 对象。因此,如果您的函数使用参数对象,则无法使用箭头函数。

示例

以下示例显示了使用箭头方法的错误值。它不适用于箭头函数中的原型方法。由于 arguments 对象,函数无法工作。

输出

输出显示了 JavaScript 中的错误值。

When You Should Not Use Arrow Functions in JavaScript

arguments 对象问题的解决方案

我们可以使用普通函数来处理 arguments 对象。

示例

以下示例函数可以正常工作,没有错误。

输出

输出显示了函数的数据。

When You Should Not Use Arrow Functions in JavaScript

结论

JavaScript 不直接使用箭头函数来处理用户验证和操作。