我有以下代码片段按预期工作。其中x
是变量
var myVariable = (x === 'A' || x=== 'B') ? 'sui' : 'pai';
但是闭包编译器正在将其转换为
var myVariable = ('A' === x || 'B'=== x) ? 'sui' : 'pai';
这也有效。请你告诉我第二个片段比第一个片段更好。谢谢。
答案 0 :(得分:6)
人类程序员sometimes do this确保他们不会将=
赋值运算符与等号==
运算符混淆。
如果您错误地使用constant = variable
而不是constant == variable
,编译器或解释器将产生警告或错误。例如,Chrome就是这样做的:
> 'A' = x
VM207:1 Uncaught ReferenceError: Invalid left-hand side in assignment
我不确定为什么转换程序会打扰,因为如果它能够交换参数以防止运行时错误,它应该也足够聪明以产生相同的信息。在转型时发出警告。