Why does "true && () => {}" produce "Uncaught SyntaxError: Malformed arrow function parameter list"?

Why does "true && () => {}" produce "Uncaught SyntaxError: Malformed arrow function parameter list"?

下面的代码,执行时,

true && () => {}

产量

Uncaught SyntaxError: Malformed arrow function parameter list

为什么?

编辑:我知道将函数括在括号中是可行的,谢谢大家,但我想了解为什么解析器不能首先确定它是一个函数。

因为箭头函数有特殊的解析规则。请参阅 official documentation 解析顺序 段落。

正在解析true && ()作为参数列表

原因是第一部分 true || (a) 被自己解析,然后解析器试图解析其余部分 => {},这导致了错误。