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

5
我见过很多人写这样的东西,是否有特定原因?
if(1 === a) {...}

替代

if(a === 1) {...}

我曾经写过一个答案,其中我写了像Array === obj.constructor这样的内容,当时有人问我,他经常看到人们这样写而不是obj.constructor === Array

所以使用哪种方式真的很重要吗?


由于规范中指定了在 x===y 中首先求值的是 x,因此如果 x 为 NaN,则会立即返回 false。 - gurvinder372
这是一种安慰性的做法:人们相信它能解决他们最重要的开发问题。 - zerkms
1个回答

8

这是yoda条件

Yoda条件得名于条件的文字值在变量之前。例如,以下是一个Yoda条件:

if ("red" === color) {
    // ...
}

这被称为Yoda条件,因为它的阅读方式类似于《星球大战》中的角色Yoda所说的“红色是颜色”。与其他排列操作数的方式进行比较。
if (color === "red") {
    // ...
}

这通常被理解为“颜色是红色”,这可以说是更自然的描述比较的方式。
Yoda条件的支持者强调,使用=而不是==是不可能出错的,因为您不能将值分配给文字。这样做会导致语法错误,并且您将及早被告知错误。因此,在工具尚未可用的早期编程中,这种做法非常普遍。
反对Yoda条件的人指出,工具使我们成为更好的程序员,因为工具将捕获=而不是==的误用(ESLint将为您捕获此问题)。因此,他们认为,该模式的实用性不足以抵消在使用Yoda条件时代码所承受的可读性损失。

2
有趣。这个人很有实力。 - shinobi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接