Javascript 比较运算符顺序

标签 javascript comparison operators

<分区>

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

这是为什么呢?是性能还是可读性相关?我个人觉得比较困惑,我一直想知道为什么有人会先写字符串,然后在比较操作中写变量。

最佳答案

主要原因是为了防止单个 equals 拼写错误导致赋值。通常称为 Yoda 条件(感谢评论中的 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) 选项会导致意外行为,因为它将 2 分配给 i 并输入 if 语句,这可能是一个微妙的错误,与接收相比很难追踪一个错误。这种方法对于 C++ 等编译语言更有用,在这种情况下,编译器会抛出一个错误,以便您在编译时了解错误。 C# 和 Java 编译器不允许条件语句作为赋值,因此排序的值(value)较小。

关于Javascript 比较运算符顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071718/

相关文章:

javascript - CanJs - 迭代 Mustache 中的数组并创建可观察值

ios - 在 Swift 中使用自定义运算符优于方法的优势

c++ - 运算符仅以一种方式定义 - C++

c# - 两个左尖括号 "<<"在 C# 中是什么意思?

javascript - 不要更新所有选择框-knockout js

c# - 如何使用子页面的 javascript 调用父页面的 TextChanged 事件?

javascript - 谷歌分析 JavaScript

java - 比较 int 和 Java 中的字符常量

c# - 比较对象的不同实现的优点/缺点

swift - 值为 Int 但 case 可以包含数组的 Switch 语句