(null!= someVariable)OR(someVariable!= null)

时间:2013-08-04 23:56:29

标签: javascript

(null!= someVariable)和(someVariable!= null)有什么区别?我在比较中看到很多人首先使用'null'。哪一个比另一个好,为什么?

4 个答案:

答案 0 :(得分:3)

他们评价同样的事情,但最好选择(someVariable != null),因为另一种方式是Yoda condition。它涉及可读性。

答案 1 :(得分:3)

他们是等同的。

但是,如果您将!=输入错误为=,则第一个会导致无效的分配错误。有些人喜欢这样,因为输入=而不是==相当容易,虽然前者并不总是意外。

您可以在Annotated ES5上查看有关==运算符的规范的准确规则。

答案 2 :(得分:0)

第一个可能更好的someVariable实际上是一个包含很长参数列表的函数。乍一看你的意图会更容易看出来。否则,我总是使用第二个。

答案 3 :(得分:0)

考虑一下你想要这个:

if (number == 42) { /* ... */ }
// This checks if "number" is equal to 42
// The if-condition is true only if "number" is equal to 42

现在,假设您忘记应该有一个双=,而您只需编写一个=

if (number = 42) { /* ... */ }
// This assigns 42 to "number"
// The if-condition is always true

此类错误非常常见,并且在允许条件内的变量赋值的编程语言中很难检测到。

现在,考虑改变你的病情顺序:

if (42 == number) { /* ... */ }
// This checks if "number" is equal to 42
// The if-condition is true only if "number" is equal to 42

42 == number的行为与number == 42的行为完全相同。

但是,如果犯了上面提到的同样的错误(你忘了应该有一个双=而你只写一个=),行为就不再相同了:

if (42 = number) { /* ... */ }
// This produces an error

因此,有些人更喜欢颠倒他们的条件顺序,因为它使得常见错误更容易被发现。这样"逆转"条件称为Yoda conditions

在条件语句中不允许变量赋值的编程语言(例如Python或Swift)中,使用Yoda条件没有任何优势,并且通常不鼓励使用它们。在其他语言(例如JavaScript或PHP)中,Yoda条件非常有用。但是,最终,它仍然主要取决于您的个人偏好或您的项目所需的任何编码标准。

Wordpress& Symfony是两个受欢迎的开源项目,Yoda条件是编码标准的一部分。