==
代替===
。==
,但在你确定输入的情况下,有些情况下你想写更少的代码。==
不那么糟糕。它也有一些陷阱,例如[1] == true
和[2] == false
。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);
}
}
Number(howManyTasksToRemoveInput.value) === tasks.length
或howManyTasksToRemoveInput.valueAsNumber === tasks.length
。无论如何,“要删除的任务数量”都应该是一个数字。 - Sebastian Simon===
替换 ==
,这就是为什么很多人使用 lint 工具强制只使用 ===
。在 Javascript 中,没有一个地方不接受 ===
而必须使用 ==
。我的观点是因为 Javascript 被设计成易学易用的语言,所以才有这个情况。我不明白您的意思。 - Jorjon==
,而选择使用===
,并询问何时使用==
有意义(如果您始终可以使用更严格的相等性或使用更一致的数据类型等)。 _“==
可以被===
替换”_和_“没有一个地方[…]”_是反对使用==
的很好的观点。这正是我的观点。事实上,JavaScript被设计成一种易于使用的语言,这可能是存在==
的一个很好的理由。 - Sebastian Simon有一种情况下,使用==
会带来明显的好处,即foo == null
:只有当foo === undefined || foo === null
时才为真,这是一个常用的测试方法。
即使在这种情况下,如果你的代码库中没有已经确立的惯例,使用像node的isNullOrUndefined(foo)
(它实现为return value == null;
!)是表达意图更清晰的方法。
当您想让JavaScript自动转换类型时。例如:
if (someElement.value == 3)
value
属性始终是一个字符串。在这里,==
运算符会自动将其转换为数字,因此您不必编写
if (parseInt(someElement.value) === 3)
你需要小心,因为某些自动转换可能不会按照你的预期进行。
=== "3"
呢?或者如果 3
将成为一个固定的数字,为什么不将输入值解析为数字,如果您已经知道需要比较的类型,并且不希望进行任何意外的转换呢? - Sebastian Simon