什么时候在Javascript中使用双重等式(松散相等)是否有意义?

时间:2018-05-25 22:08:12

标签: javascript comparison equality

鉴于type coercionperformance issue,作为JS新手,我总是试图避免使用双重等式,而是选择三重相等。

然而,什么时候使用双重质量才有意义?

3 个答案:

答案 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;!)也是表达意图的一种更清晰的方法,如果这不是您的代码库中的既定做法正在工作。