isNaN() 真的有必要吗?

Is isNaN() really necessary?

根据 MDN page1 关于 isNaN(强调我的):

Unlike all other possible values in JavaScript, it is not possible to rely on the equality operators (== and ===) to determine whether a value is NaN or not, because both NaN == NaN and NaN === NaN evaluate to false. Hence, the necessity of an isNaN function.

但是,由于 NaN 是 JavaScript 中唯一与自身比较不相等的值,实际上可以依靠严格相等运算符来确定 明确地,无论一个值是NaN还是不是:

const value = NaN;
console.log(value === value)

也就是说,那句 MDN 的解释是什么?


PS:我确实知道 MDN 不是官方文档(那将是 ECMA),就像任何人都可以编辑它的 wiki 一样。尽管如此,它还是一个非常可靠的来源。

1:该问题发布后该段已被编辑,由回答者

不,不需要 built-in isNaN 函数。 isNaN 只是为了方便。当然,可以手动执行:

const isNaN = arg => arg !== arg

对于您想在其中执行此类操作的每个脚本,但它会很乏味。

或者,如果没有该函数,请考虑阅读如下代码:

if (parsedNumber !== parsedNumber) {
  // It's NaN
}

那看起来真的很奇怪,让代码尽可能可读符合程序员的最大利益。