NaN
全局属性 NaN 的值表示不是一个数字(not-a-number)。在 JS 中,NaN 最特殊的地方就是,我们不能使用相等运算( == )和(===)来判断一个值是否是 NaN,因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。
isNaN
全局函数,尝试将参数转换为数值,任何无法转换的值(如字符串)都会返回true,可能导致误判。
Number.isNaN
number的静态方法,仅当参数为数值且严格等于 NaN 时返回true,不进行类型转换,提供更高的准确性。它是原来的全局 isNaN() 的更稳妥的版本。
使用建议
-
当需要处理可能包含非数字值的输入时,
Number.isNaN更为合适,因为它不会进行不必要的类型转换,减少了误判的风险。 -
对于简单的NaN检测,
isNaN因其简便性可能足够使用。但在复杂的数据处理中,推荐使用Number.isNaN以确保准确性。