125*_*748 7 javascript ecmascript-6 arrow-functions
使用Babel,我可以看到
callback = () => {};
Run Code Online (Sandbox Code Playgroud)
编译成
callback = function callback() {};
Run Code Online (Sandbox Code Playgroud)
这是我所期待的.但是当我尝试使用它时出现错误||
callback = callback || () => {}
Run Code Online (Sandbox Code Playgroud)
我期望相当于
callback = callback || function(){};
Run Code Online (Sandbox Code Playgroud)
为什么这是一个错误?另外,这个熟悉的语法有更正确的ES6版本吗?
它失败了,因为那只是无效的语法.
使用以下方法使其工作:
callback = callback || (() => {})
Run Code Online (Sandbox Code Playgroud)
如果不以这种方式包装它,它将被解释为您输入以下内容.但那是无效的语法.
callback = (callback || ()) => {}
Run Code Online (Sandbox Code Playgroud)
要扩展分配的评估,请参阅规范AssignmentExpression.它由一个ConditionalExpression或一个ArrowFunction(或其他一些我将忽略的表达式)组成.因此,解释器将尝试将您的代码用作条件.但是,()作为一种表达预计本身是不是在这方面有效的内部是ParenthesizedExpression.结果,它将失败.如果您将表达式分组为有效表达式的callback || (() => {})两侧LogicalOrExpressions.
由于运算符优先级,您必须将箭头函数括在括号中才能使其工作:
callback = callback || (() => {})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |