如何使用 || 的箭头函数操作员
How to use arrow function with || operator
使用 Babel,我可以看到
callback = () => {};
编译为
callback = function callback() {};
这是我所期望的。但是,当我尝试将它与 ||
一起使用时出现错误
callback = callback || () => {}
我希望相当于
callback = callback || function(){};
为什么这是一个错误?另外,这个熟悉的语法是否有更正确的 ES6 版本?
失败是因为语法无效。
使用以下命令使其工作:
callback = callback || (() => {})
如果你不这样包装,它会被解释为你输入了以下内容。但这是无效语法。
callback = (callback || ()) => {}
要扩展赋值的评估,请参阅 AssignmentExpression
的规范。它由一个 ConditionalExpression
或一个 ArrowFunction
(或我将忽略的其他一些表达式)组成。因此解释器将尝试使用您的代码作为条件。但是 ()
本身在该上下文中是无效的,因为 inside 应该是 ParenthesizedExpression
的表达式。结果,它将失败。如果您改为将表达式分组为 callback || (() => {})
,LogicalOrExpressions
的两边都是有效表达式。
由于运算符优先级,您必须将箭头函数括在括号中才能使其工作:
callback = callback || (() => {})
如果您打算使用 ||
为函数的回调参数提供默认值,那么只写
会更容易
function myfunc(callback = () => { }) {
callback("Hi 1252748");
}
不需要额外的括号。
使用 Babel,我可以看到
callback = () => {};
编译为
callback = function callback() {};
这是我所期望的。但是,当我尝试将它与 ||
callback = callback || () => {}
我希望相当于
callback = callback || function(){};
为什么这是一个错误?另外,这个熟悉的语法是否有更正确的 ES6 版本?
失败是因为语法无效。
使用以下命令使其工作:
callback = callback || (() => {})
如果你不这样包装,它会被解释为你输入了以下内容。但这是无效语法。
callback = (callback || ()) => {}
要扩展赋值的评估,请参阅 AssignmentExpression
的规范。它由一个 ConditionalExpression
或一个 ArrowFunction
(或我将忽略的其他一些表达式)组成。因此解释器将尝试使用您的代码作为条件。但是 ()
本身在该上下文中是无效的,因为 inside 应该是 ParenthesizedExpression
的表达式。结果,它将失败。如果您改为将表达式分组为 callback || (() => {})
,LogicalOrExpressions
的两边都是有效表达式。
由于运算符优先级,您必须将箭头函数括在括号中才能使其工作:
callback = callback || (() => {})
如果您打算使用 ||
为函数的回调参数提供默认值,那么只写
function myfunc(callback = () => { }) {
callback("Hi 1252748");
}
不需要额外的括号。