如果我有这样的功能:
param => params + 1
我需要debugger
在函数体内放一个语句.是这样添加括号:
param => { debugger; return params + 1 }
唯一的选择?
来自MDN关于箭头功能的文章:
(param1, param2, …, paramN) => { statements } (param1, param2, …, paramN) => expression
您可以看到无括号语法要求箭头右侧的代码是表达式,这是语言本身所做的(不幸)区分.
因为debugger
是一个语句,所以在任何地方使用表达式都是语法错误.你可以解决这个问题的一个方法是在一个表达式中转换你的调试器语句,你可以用JavaScript来评估但不返回,例如:
function debug(args) { debugger; return true; } params => debug() && params + 1 // or params => console.log(params) || params + 1
这种方式的工作原理是,由于逻辑运算符在JavaScript 中的运行方式,这是正确的:
truthyA && B === B falsyA || B === B
当链接逻辑运算符时,JavaScript从左到右计算子表达式,然后根据它们的布尔等价物进行操作.这就是为什么你有时会看到&&
用来代替if
陈述的原因:
if (smth) doStuff(); // is equivalent to: smth && doStuff();