if语句中表达式的顺序

The order of expressions in an if statement

本文关键字:顺序 表达式 语句 if      更新时间:2023-09-26

可能重复:
这些(b条件==NULL(和(NULL==b条件(之间有什么区别
比较语句的Javascript缩小

我一直在这样写我的if声明:

if(variable1 === 1){}
if(variable2 > 10){}
if(variable3 == "a"){}

但我记得在某个地方读到(不幸的是,我再也找不到那个页面了(,if语句最好这样写:

if(1 === variable1){}
if(10 < variable2){}
if("a" == variable3){}

将变量放在表达式的右侧。

这是正确的吗?如果是这样的话,有人能解释为什么这是正确的吗?此外,这适用于所有编程语言,还是仅适用于javascript?

TIA

1 === variable1与用Yoda表示法**编写的表达式variable1 === 1相同:左侧列出常量,右侧列出变量。

一些程序员选择使用它的主要原因是为了避免编写if (a = 1)的常见错误,因为程序员实际上指的是if (a == 1)if (a === 1)。以下代码行将起作用,但不符合预期(a被分配了一个值,if块将始终执行(:

if (a = 1) {}

以另一种方式编写的相同表达式将生成语法(或编译(错误:

if (1 = a) {}

程序员可以立即发现错误并进行修复

我不喜欢或不使用尤达符号。编码时我尽量睁大眼睛。

**我找不出这个词的由来。

有些人可能更喜欢颠倒if中的值顺序,因为第二种形式更具保护性。事实上,如果你错过了键入等号:

if (42 = myVar) { }

在编译时抛出语法错误,而

if (myVar = 42) { } 

计算赋值表达式的完成值,在本例中为42,即JavaScript中的truthy值

无论如何,今天类似的错误可以很容易地用esint等工具发现。。。因此,使用第一种形式并没有真正的意义。

两者都是正确的,但第二个很难看,我还没有真正看到太多

"如果蓝色是天空">

而不是

"如果天空是蓝色的">

无法收回我读过的地方:(。

===:

根据定义,它是交换的,因为它检查两个对象是否相同(相同类型,相同值(。

==:

==更复杂,因为涉及转换,但规范明确表示:

A==B等同于B==A,但按照评估A和B 的顺序

换句话说,==是可交换的。

这意味着你应该简单地使用读者不那么丑陋和最熟悉的。这是第一个。