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.
那么我使用哪种方式真的很重要?
这是尤达的条件:
Yoda条件之所以如此命名,是因为条件的字面值首先出现,而变量排在第二位.例如,以下是Yoda条件:
if ("red" === color) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这被称为Yoda条件,因为它读作"红色是颜色",类似于星球大战人物尤达所说的方式.与安排操作数的其他方式相比:
if (color === "red") {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这通常写着"颜色是红色",这可以说是描述比较的更自然的方式.
Yoda条件的支持者强调,不可能错误地使用=而不是==,因为您无法分配字面值.这样做会导致语法错误,并且您会在早期被告知错误.因此,这种做法在早期编程中非常普遍,因为尚未提供工具.
尤达的条件反对者指出,工装,使我们更好的程序员,因为工具将赶上误用=代替==的(ESLint将抓住这个给你).因此,他们认为,模式的效用并不超过使用Yoda条件时代码所能达到的可读性.