首页 > 解决方案 > 这 2 个 JavaScript 语句是否等效?

问题描述

这两个陈述似乎做同样的事情。

const handleClick = () => alert('foo');

function handleClick() {
    alert('foo');
}

它们是相同的,只是在语法上不同吗?第一个看起来像一个变量声明,而第二个显然是一个函数定义。

标签: javascriptfunctiondeclarationvariable-declarationfunction-declaration

解决方案


不,它们不是一回事。箭头函数有一些限制:

  • 对 this 或 super 没有自己的绑定,不应用作方法。
  • 没有 new.target 关键字。
  • 不适用于 call、apply 和 bind 方法,这些方法通常依赖于建立作用域。
  • 不能用作构造函数。
  • 不能使用yield,在它的体内。

推荐阅读