4
当使用箭头功能并结合短路评估时,我遇到了意外的行为。箭头功能和短路评估
正如预期的那样,在函数下面的代码的结果被分配给:
let a = false || function(data) { return data }
然而使用箭头函数时此相同的主要抛出异常:
let a = false || (data) => data //SyntaxError: Unexpected token false
尽管如此,如果您需要将箭头函数分配给一个变量,然后执行“相同”操作,但将箭头函数替换为新变量(a)结果与您预期的一样,函数被分配给变量(b):
let a = (data) => data
let b = false || a //b = (data) => data
问题
是什么原因造成的?这是故意的吗?如果是这样,为什么?
注意
与&&
发生同样的问题,认为这使我它有做与一般的短路评价,而不是只||
和&&
虽然我没有足够的见地,以使该要求。
编辑
在()
作品结束语箭头的功能!
对不起,重复的问题,疯狂搜索,但显然不够疯狂。原来,这是一个需要工作不只是我的JavaScript知识
我想这是关于编译器如何翻译它的东西。如果你添加另一对括号,它会起作用 'let a = false || ((data)=> data)' –
可能是一个关于参数列表应该在哪里开始的简单的语法歧义。 – deceze
false || (data)=> data ===(false || data)=> data –