isNaN真的必要吗?

问题描述

根据MDN page 1 关于isNaN(强调我的意思):

与JavaScript中所有其他可能的值不同,不可能依靠相等运算符(==和===)来确定一个值是否为NaN,因为NaN == NaN和NaN === NaN评估为假。 因此,isNaN函数的必要性

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

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

那是什么,该MDN句子的解释是什么?


PS:我确实知道MDN不是官方文档(可能是ECMA),就像Wiki一样,任何人都可以对其进行编辑。即使这样,它还是一个非常可靠的来源。

1:该问题在回答者as mentioned发布问题后已被编辑。

解决方法

否,不需要内置isNaN函数。 isNaN只是为了方便起见。当然,可以手动执行以下操作:

const isNaN = arg => arg !== arg

对于要在其中执行此操作的每个脚本,但这会很乏味。

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

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

这看起来真的很奇怪,并且使代码具有尽可能高的可读性符合程序员的最大利益。