考虑到类型强制和性能问题,作为一个 JS 新手,我一直试图避免使用双重相等,而是选择了三重相等。
但是,什么时候使用双重质量才有意义?
简短的回答:使用==
而不是===
.
长答案:虽然它从来没有意义,但在某些情况下您想编写更少的代码,并且您确定自己的输入。
==
如果您真的了解什么是真实的,那还不错。有一些陷阱,例如[1] == true
and [2] == false
。
请记住,Javascript 的主要目标是成为一种易于网页设计师使用的语言,这是您遇到所有这些东西的原因之一。
作为一个简单的例子,正如Barmar 所说,最好的方法是使用它来避免转换数据和检查相等性。这是另一个例子:
const deleteTodos = _ => {
if (howManyTasksToRemoveInput.value == tasks.length) {
warningLabel.innerHTML = "You can't remove all the list";
} else if (howManyTasksToRemoveInput.value > tasks.length) {
warningLabel.innerHTML = "You DEFINITELY can't remove more tasks than you have";
} else {
tasks.splice(0, +howManyTasksToRemoveInput.value);
}
}
当您想允许 Javascript 自动转换类型时。例如
if (someElement.value == 3)
value
输入的总是一个字符串。运算符会在==
这里自动转换为数字,所以你不用写
if (parseInt(someElement.value) === 3)
您应该小心,因为某些自动转换可能无法达到您的预期。
在一种情况下,使用 有一个明显的好处==
,那就是foo == null
:当且仅当foo === undefined || foo === null
,这是一个普遍有用的测试,这是正确的。
即使在这里,使用类似节点的东西isNullOrUndefined(foo)
(实现为return value == null;
!)是表达意图的更清晰的方式,如果它不是您正在工作的代码库中的既定做法。