Javascript:比较运算符中的操作数顺序

shi*_*obi 5 javascript comparison performance

是否有一个特定的原因,为什么我看到很多人写作

if(1 === a) {...}
Run Code Online (Sandbox Code Playgroud)

代替

if(a === 1) {...}
Run Code Online (Sandbox Code Playgroud)

我给出了一个答案,其中我写了一些类似的东西Array === obj.constructor,当有人问我他经常看到人们这样写而不是obj.constructor === Array.

那么我使用哪种方式真的很重要?

Ant*_*ige 7

这是尤达的条件:

Yoda条件之所以如此命名,是因为条件的字面值首先出现,而变量排在第二位.例如,以下是Yoda条件:

if ("red" === color) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这被称为Yoda条件,因为它读作"红色是颜色",类似于星球大战人物尤达所说的方式.与安排操作数的其他方式相比:

if (color === "red") {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这通常写着"颜色是红色",这可以说是描述比较的更自然的方式.

Yoda条件的支持者强调,不可能错误地使用=而不是==,因为您无法分配字面值.这样做会导致语法错误,并且您会在早期被告知错误.因此,这种做法在早期编程中非常普遍,因为尚未提供工具.

尤达的条件反对者指出,工装,使我们更好的程序员,因为工具将赶上误用=代替==的(ESLint将抓住这个给你).因此,他们认为,模式的效用并不超过使用Yoda条件时代码所能达到的可读性.

  • 有趣的。这股力量很强。 (2认同)