为什么我看到很多人写作
有特定的原因if(1 === a) {...}
而不是
if(a === 1) {...}
我给出了一个答案,其中我写了类似Array === obj.constructor
的内容,当有人问我经常看到人们这样写而不是obj.constructor === Array
时。
所以我使用哪种方式真的很重要?
答案 0 :(得分:6)
Yoda条件如此命名是因为条件的字面值首先出现,而变量出现在第二位。例如,以下是Yoda条件:
if ("red" === color) {
// ...
}
这被称为Yoda条件,因为它读作“红色是颜色”,类似于星球大战人物尤达所说的方式。与安排操作数的其他方式相比:
if (color === "red") {
// ...
}
这通常是“颜色为红色”,这可以说是描述比较的更自然的方式。
Yoda条件的支持者强调,不可能错误地使用=而不是==因为您无法分配字面值。这样做会导致语法错误,并且您会在早期被告知错误。因此,在早期编程中,这种做法非常普遍,但尚未提供工具。
Yoda条件的反对者指出,工具使我们成为更好的程序员,因为工具会错误地使用=而不是==(ESLint会为你捕获这个)。因此,他们认为,模式的效用并不会超过代码在使用Yoda条件时所能达到的可读性。