4

考虑到类型强制性能问题,作为一个 JS 新手,我一直试图避免使用双重相等,而是选择了三重相等。

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

4

3 回答 3

3

简短的回答:使用==而不是===.

长答案:虽然它从来没有意义,但在某些情况下您想编写更少的代码,并且您确定自己的输入。

==如果您真的了解什么是真实的,那还不错。有一些陷阱,例如[1] == trueand [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);
    }
}
于 2018-05-25T23:20:03.897 回答
1

当您想允许 Javascript 自动转换类型时。例如

if (someElement.value == 3)

value输入的总是一个字符串。运算符会在==这里自动转换为数字,所以你不用写

if (parseInt(someElement.value) === 3)

您应该小心,因为某些自动转换可能无法达到您的预期。

于 2018-05-25T22:19:03.550 回答
0

在一种情况下,使用 有一个明显的好处==,那就是foo == null:当且仅当foo === undefined || foo === null,这是一个普遍有用的测试,这是正确的。

即使在这里,使用类似节点的东西isNullOrUndefined(foo)(实现为return value == null;!)是表达意图的更清晰的方式,如果它不是您正在工作的代码库中的既定做法。

于 2019-11-18T23:16:24.533 回答