(null!= someVariable)和(someVariable!= null)有什么区别?我在比较中看到很多人首先使用'null'。哪一个比另一个好,为什么?
答案 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条件非常有用。但是,最终,它仍然主要取决于您的个人偏好或您的项目所需的任何编码标准。