【问题标题】:Javascript comparison operators order [duplicate]Javascript比较运算符顺序[重复]
【发布时间】:2014-04-14 22:45:03
【问题描述】:

我看到了几次类似 "expected" === variable 的代码,而不是 variable === "expected"

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

【问题讨论】:

  • 尤达条件。你会使用它们。

标签: javascript comparison operators


【解决方案1】:

主要原因是防止单个等于错字导致分配。通常称为尤达条件(感谢 cmets 中的 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 编译器不允许条件作为赋值,因此排序在那里的价值较小。

【讨论】:

  • 如果我只是新的如何搜索它,或者关于尤达条件,很好的答案。
  • @IulianOnofrei - 很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2011-03-10
相关资源
最近更新 更多