javascript - 这个箭头函数如何不给出任何错误?

标签 javascript ecmascript-6 arrow-functions

我刚刚遇到了一些代码,然后我做了一个测试,发现了一些我不理解的东西。

hey(
  () => {},
  () => {
    foo: "bar";
  }
);

为什么下面的语法是有效的语法?在第一个参数中,我可以理解,因为 是一个空函数作用域,但在第二个参数中,它如何不给我错误?

如果它返回一个对象,它应该是 ({...})并且不接受;在最后,所以这意味着第二个参数不是一个对象。

如果它不是一个对象,那它是什么?为什么这不是语法错误?

这里发生了什么 JavaScript 黑魔法?

这是 codesanbox 上的示例它不会给我任何语法错误。

编辑

我刚刚发现了一些其他奇怪的事情。

hey(
  () => {},
  () => {
    "bar"; // without foo:
  }
);

这如何不会给出任何错误?

最佳答案

如果您跳过 (),它会被解释为 labeled statement

() => {
  foo: "bar";
}

如果添加其他属性,您可以清楚地看到错误

() => {
  foo: "bar",
  baz: ''
}

关于javascript - 这个箭头函数如何不给出任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59393524/

相关文章:

javascript - 类型错误:a 未定义

javascript - 如何使用 mongoose db.collection.find() 的返回值编写条件逻辑?

javascript - @@的惯例

javascript - 在 Vuejs 中调用数据内部的方法

javascript - 如何在模仿 JavaScript CryptoJS 的 C# 中加密值

javascript - 我无法从 PHP 中执行 pdf 生成 python 命令

javascript - 有没有办法在每个 $http.get 上禁用 $digest 的触发?

javascript - 解构参数对象,但让它在主体函数中可用?

javascript - 我们应该在 React 功能组件的每个函数处理程序中使用 useCallback

javascript - 为什么带有 async/await 的 Array.map() 返回奇怪的结果?