问题描述
根据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
}
这看起来真的很奇怪,并且使代码具有尽可能高的可读性符合程序员的最大利益。