变量===常量和常量===变量之间有什么区别

brk*_*brk 2 javascript

我有以下代码片段按预期工作.哪里x是变量

var myVariable = (x === 'A' || x=== 'B') ? 'sui' : 'pai';
Run Code Online (Sandbox Code Playgroud)

但是闭包编译器正在将其转换为

var myVariable = ('A' === x || 'B'=== x) ? 'sui' : 'pai';
Run Code Online (Sandbox Code Playgroud)

这也有效.请你告诉我第二个片段比第一个片段更好.谢谢.

Aln*_*tak 6

人类程序员有时会这样做,以确保他们不会将=赋值运算符与相等==运算符混淆.

如果您constant = variable错误地使用而不是constant == variable编译器或解释器将产生警告或错误.例如,Chrome就是这样做的:

> 'A' = x
VM207:1 Uncaught ReferenceError: Invalid left-hand side in assignment
Run Code Online (Sandbox Code Playgroud)

我不确定为什么转换器会打扰,因为如果它能够交换参数以防止运行时错误,它应该足够聪明,以便在转换时产生相同的警告.