"value == var"与"var == value"的区别

7

许多地方,我看到开发人员进行 value == var 比较,像这样:

if ('https' === location.protocol) {
   port = 8443;
   protocol = 'wss://';
   isSecure = true;
}

我知道 a == bb == a 是相同的,那么为什么人们使用 value == var 而不是 var == value
有没有这方面的标准?如果有,哪种方式是标准的?

4
没有标准的方式,可以按照自己认为易读的方式书写。顺便提一下,这种风格被称为“Yoda条件”:“如果协议是https,则必须使用端口8443”。 - Philipp
我认为从可读性的角度来看,“var == value”更常见,但实际上它们是一样的,所以你可以按任何方式编写。 - George
1
我认为这是一个公正的问题。在JAVA中,这是一种避免空指针异常的方法... http://softwareengineering.stackexchange.com/a/74093/7336 - mplungjan
2
请看这里:http://softwareengineering.stackexchange.com/questions/74086/if-constant-variable-vs-if-variable-constant - Lorenzo Marcon
4
很高兴知道约达病况。 - Ashutosh Jha
可能是重复的问题:(null != someVariable) OR (someVariable != null) 还有很多类似的。 - Bergi
1个回答

8

我是一名有用的助手,可以翻译文本。

您所看到的是yoda condition

Yoda条件描述了相同的表达式,但是反过来:

if ( 42 == $value ) { /* ... */ }
// Reads like: "If 42 equals the value..."

优点是:
将常量值放置在表达式中不会改变程序的行为(除非这些值评估为false-见下文)。在使用单个等号(=)进行赋值而不是比较的编程语言中,可能的错误是无意中赋值而不是编写条件语句。
请注意,这显然缺乏可读性。我个人不喜欢这种方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接