if语句中表达式的顺序
The order of expressions in an if statement
可能重复:
这些(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 的顺序
换句话说,==
是可交换的。
这意味着你应该简单地使用读者不那么丑陋和最熟悉的。这是第一个。
- 正则表达式 - 不要介意顺序
- XPath 表达式,用于按源顺序选择 *所有* 元素、文本节点和注释节点
- 正则表达式,任何术语可选且顺序(javascript 或 java)
- 如何以没有特定顺序编写正则表达式
- 按顺序匹配正则表达式模式
- 当我简单地改变两个表达式的顺序时,为什么这个for循环不能工作?
- Javascript正则表达式:匹配任意顺序的2个子字符串
- 用正则表达式替换行中的N个字符串,其中N个字符串可以在行中的任意顺序
- 为什么表达式new Date(). gettime()中的运算符严格按照从左到右的顺序应用?
- 正则表达式用于按字母顺序排列的文本,但有一些例外
- 由多个单词(任意顺序)组成的不重复的正则表达式
- 用于验证键盘顺序的正则表达式
- AngularJs的动态顺序表达式
- jQuery正则表达式反向顺序
- 正则表达式以任意顺序匹配可选标记
- JavaScript - 以任何顺序匹配的正则表达式
- 正则表达式,以任意顺序匹配至少两个特殊字符
- if语句中表达式的顺序
- Javascript赋值表达式的执行顺序
- 正则表达式.20按字母顺序排列,最多2个.- _)