Javascript if语句中表达式的顺序

Javascript if语句中表达式的顺序,javascript,if-statement,operators,Javascript,If Statement,Operators,可能重复: 我一直在写我的if语句,像这样: if(variable1 === 1){} if(variable2 > 10){} if(variable3 == "a"){} if(1 === variable1){} if(10 < variable2){} if("a" == variable3){} 但我记得在某个地方读到过(不幸的是,我再也找不到那页了),如果语句最好是这样写的: if(variable1 === 1){} if(variable2 > 10)

可能重复:

我一直在写我的
if
语句,像这样:

if(variable1 === 1){}
if(variable2 > 10){}
if(variable3 == "a"){}
if(1 === variable1){}
if(10 < variable2){}
if("a" == variable3){}
但我记得在某个地方读到过(不幸的是,我再也找不到那页了),如果
语句最好是这样写的:

if(variable1 === 1){}
if(variable2 > 10){}
if(variable3 == "a"){}
if(1 === variable1){}
if(10 < variable2){}
if("a" == variable3){}
if(1===variable1){
if(10
将变量放在表达式的右侧

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


TIA两个都是正确的,但是第二个很难看,我还没有看到太多。这和我说的一样

“如果蓝色是天空”

而不是

“如果天空是蓝色的”


。无法在我读过的地方重新命名:)。

有些人可能更喜欢在
中反转值的顺序,因为第二种形式更具保护性。
事实上,如果您没有键入等号:

if (42 = myVar) { }
在编译时引发语法错误,而

if (myVar = 42) { } 
计算赋值表达式的完成值,在本例中为
42
,这是JavaScript中的真实值

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

==:

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

==:

==更复杂,因为涉及转换,但:

A==B等同于B==A,除了A和B的求值顺序

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


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

1===variable1
与用Yoda符号**编写的表达式
variable1===1
相同:常数列在左侧,变量列在右侧

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

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

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

我不喜欢或使用尤达符号。我试着在编码时睁大眼睛


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

两者都是正确的,但第二个词很难看。对于看不到已删除内容的人:
“Yoda条件”-使用if(常量==变量)而不是if(变量==常量),如if(4==foo)。因为这就像说“如果天空是蓝色的”或“如果男人是高的”
。又称为fugly as hell:)它跑不快。它更难看,因此您会减慢调试和读取codeYoda条件的速度--@Yoshi在这种特定情况下,请简单地使用
!(我的…
if
子句中的第一个位置设置值。我试过了。我注意到。看起来还是从右到左阅读。我想知道为什么闭包编译器使用“Yoda条件”?将其定义为“Yoda条件”,并使用“if blue is sky”示例。@jimmey:我在某个地方读过(我想在闭包编译器的讨论论坛上)
1===somevar
压缩比
somevar===1
更好,这是唯一的原因。这并不是使用可读性较差的形式的好理由。对这个问题的公认答案表明:该术语的起源: