鉴于type coercion和performance issue,作为JS新手,我总是试图避免使用双重等式,而是选择三重相等。
然而,什么时候使用双重质量才有意义?
答案 0 :(得分:1)
如果您想允许Javascript自动转换类型。 E.g。
if (someElement.value == 3)
value
输入始终是一个字符串。 ==
运算符会自动将其转换为数字,因此您不必编写
if (parseInt(someElement.value) === 3)
您应该小心,因为某些自动转换可能无法达到预期效果。
答案 1 :(得分:1)
简短回答:使用==
而不是===
永远没有意义。
答案很长:虽然它没有意义,但有些情况下你想要编写更少的代码,而且你确定你的输入。
如果你真的明白什么是真的,那么 ==
并不是那么糟糕。有一些问题,例如[1] == true
和[2] == false
。
请记住网页设计师使用Javascript was to be an easy language的主要目的,这是您遇到的所有这些内容背后的原因之一。
作为一个简单的例子,作为Barmar said,最好的方法是使用它来避免转换数据和检查相等性。这是另一个例子:
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);
}
}
答案 2 :(得分:0)
在一种情况下,使用==
有 a 明显的好处,即foo == null
:只有当foo === undefined || foo === null
才有用,这是正确的测试。
即使在这里,使用结点的isNullOrUndefined(foo)
(实现为return value == null;
!)也是表达意图的一种更清晰的方法,如果这不是您的代码库中的既定做法正在工作。