isNaN 和 Number.isNaN 函数有什么区别?

54 阅读1分钟

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以确保准确性。