Javascript比较运算符命令

时间:2014-04-14 22:45:04

标签: javascript comparison operators

我看过几次像"expected" === variable而不是variable === "expected"的代码。

为什么? 性能可读性是否相关?我个人觉得它更令人困惑,我总是想知道为什么有人先编写字符串,然后再进行比较操作中的变量。

1 个答案:

答案 0 :(得分:3)

主要原因是防止单个等于拼写错误导致分配。通常称为尤达条件(感谢Paul S在评论中)。

例如:

var i = 1;
if(i = 2)  //no error, but unexpected behavior 
if(2 = i) //error - invalid left hand side assignment. 

if(i=2)选项会导致意外行为,因为它会为i分配2并输入if语句,这可能是一个与接收错误相比难以追踪的细微错误。这种方法对于诸如C ++之类的编译语言更有用,其中编译器将引发错误,以便您在编译期间了解它。 C#和Java编译器不允许条件作为赋值,因此订购的价值较低。