【问题标题】:Are these 2 JavaScript statements equivalent? [duplicate]这 2 个 JavaScript 语句是否等效? [复制]
【发布时间】:2021-10-16 18:53:42
【问题描述】:

这两个语句似乎做同样的事情。

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

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

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

【问题讨论】:

  • 你在 MDN 上阅读过常规函数和箭头函数之间的区别吗?特别是那些使用隐式返回的人
  • 他们做的事情完全一样,而且他们是一样的。第一个是普通函数,第二个是 ES6 规范中所谓的箭头函数。
  • @Gorynych,他们不一样。

标签: javascript function declaration variable-declaration function-declaration


【解决方案1】:

不,它们不是一回事。 The arrow function 有一些限制:

  • 对 this 或 super 没有自己的绑定,因此不应 用作方法。
  • 没有 new.target 关键字。
  • 不适合 call、apply 和 bind 方法,这些方法通常依赖于建立一个 范围。
  • 不能用作构造函数。
  • 不能在其范围内使用产量 身体。

【讨论】:

  • 这使得箭头函数看起来功能较少,那么为什么要发明它们呢?
  • @JSNinja 最重要的原因之一是使用this 属性解决“问题”。箭头函数没有自己的 this 属性。因此,您可以直接从回调函数访问外部函数作用域的this
【解决方案2】:

与函数表达式相比,ES6 箭头函数为您提供了一种编写更短语法的替代方法。没有性能差异。

Are arrow functions faster (more performant, lighter) than ordinary standalone function declaration in v8?

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2012-12-01
    • 1970-01-01
    • 2013-10-07
    • 2012-05-31
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2014-10-01
    相关资源
    最近更新 更多