【发布时间】:2021-06-18 22:41:55
【问题描述】:
我熟悉 NaN 在 JavaScript 中的“怪异”,即 NaN === NaN 总是返回 false,如 here 所述。所以不应该进行===比较来检查NaN,而是使用isNaN(..)。
所以我很惊讶地发现
> [NaN].includes(NaN)
true
这似乎不一致。为什么会有这种行为?
它是如何工作的? includes 方法是否专门检查isNaN?
【问题讨论】:
-
This seems inconsistent,是的,看起来确实很奇怪。 NaN 不等于除 X 之外的任何东西,包括 NaN。但我假设在这里选择它是因为如果它没有返回 true,那么在数组中包含 NaN 将毫无意义,因为它永远不会被发现。 -
@Keith 可以通过
.some()找到。 this 方法被决定与NaN一起工作,这与其他任何东西都不同,这有点奇怪。除了地图和场景。对于那些,将NaN视为相同的值确实有意义,否则数据结构将变得非常无用。
标签: javascript arrays ecmascript-6 nan