是否有一个具体的原因,我看到很多人写的Javascript:操作数的比较运算顺序
if(1 === a) {...}
代替
if(a === 1) {...}
我已经给出了其中我写了类似的答案Array === obj.constructor
这是有人问我,他经常看到人们这样写而不是obj.constructor === Array
。
那么,我使用哪种方式真的很重要?
是否有一个具体的原因,我看到很多人写的Javascript:操作数的比较运算顺序
if(1 === a) {...}
代替
if(a === 1) {...}
我已经给出了其中我写了类似的答案Array === obj.constructor
这是有人问我,他经常看到人们这样写而不是obj.constructor === Array
。
那么,我使用哪种方式真的很重要?
尤达条件如此命名是因为条件的字面意义是第一位的,而可变排第二。例如,下面是一个尤达条件:
if ("red" === color) {
// ...
}
这就是所谓的尤达条件,因为它的内容,“红色的颜色”,类似星球大战人物尤达说话的方式。相较于安排操作数的另一种方式:
if (color === "red") {
// ...
}
这通常写着,“颜色是红色的”,这可以说是形容比较更自然的方式。
尤达条件的支持者强调,不可能错误地使用=而不是==,因为你不能分配一个字面值。这样做会导致语法错误,并会在早期通知您错误。因此,这种做法在早期的编程工具中尚不可用的情况下非常普遍。
尤达条件的反对者指出,工具使我们更好的程序员,因为工具会捕获错误地使用=而不是==(ESLint会为你解决这个问题)。因此,他们认为,模式的效用不会超过代码在使用Yoda条件时需要的可读性。
有趣。这支部队的力量很强。 – shinobi
可能是因为'x === y' x首先被评估,如果x是NaN false按照规范ASAP返回http://www.ecma-international.org/ecma-262/6.0/ #sec-strict-equality-comparison – gurvinder372
这是一种安慰剂的做法:人们相信它会解决他们最重要的发展问题。 – zerkms