我刚刚遇到了一些代码,然后我做了一个测试,发现了一些我不理解的东西。
hey(
() => {},
() => {
foo: "bar";
}
);
为什么下面的语法是有效的语法?在第一个参数中,我可以理解,因为 是一个空函数作用域,但在第二个参数中,它如何不给我错误?
如果它返回一个对象,它应该是 ({...})
并且不接受;
在最后,所以这意味着第二个参数不是一个对象。
如果它不是一个对象,那它是什么?为什么这不是语法错误?
这里发生了什么 JavaScript 黑魔法?
这是 codesanbox 上的示例它不会给我任何语法错误。
编辑
我刚刚发现了一些其他奇怪的事情。
hey(
() => {},
() => {
"bar"; // without foo:
}
);
这如何不会给出任何错误?
最佳答案
如果您跳过 ()
,它会被解释为 labeled statement
() => {
foo: "bar";
}
如果添加其他属性,您可以清楚地看到错误
() => {
foo: "bar",
baz: ''
}
关于javascript - 这个箭头函数如何不给出任何错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59393524/