来自MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Basic_Syntax关于箭头函数的文章:
(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
您可以看到,无括号语法要求箭头右侧的代码是表达,这是一个(不幸的)区别 http://www.2ality.com/2012/09/expressions-vs-statements.html由语言本身产生。
Since debugger
是一个声明,在任何地方使用它表达预计是语法错误。要解决此问题,您可以采取的一件事是将调试器语句转换为表达式,欺骗 JavaScript 进行计算但不返回,例如:
function debug(args) {
debugger;
return true;
}
params => debug() && params + 1
// or
params => console.log(params) || params + 1
这是因为逻辑运算符 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OperatorsJavaScript 中的函数,这是正确的:
truthyA && B === B
falsyA || B === B
当链接逻辑运算符时,JavaScript 从左到右计算子表达式,然后根据它们的布尔等价物进行操作。这就是为什么你有时会看到&&
用于代替if
声明:
if (smth) doStuff();
// is equivalent to:
smth && doStuff();