返回
Number.isNaN与isNaN的区别
前端
2024-02-21 11:31:26
Number.isNaN
Number.isNaN()方法是ES6中引入的,专门用于检测数值是否为 NaN。它的语法非常简单,只接受一个参数,即要检测的数值。如果该数值为 NaN,则返回 true;否则,返回 false。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(1)); // false
console.log(Number.isNaN('foo')); // false
Number.isNaN()方法的一个主要优点是,它只检测数值是否为 NaN,而不会尝试将其转换为数值。这意味着它可以准确地检测出 NaN 值,即使该值是字符串或其他非数值类型。
console.log(Number.isNaN('NaN')); // true
console.log(isNaN('NaN')); // true
isNaN
isNaN()函数是一个全局函数,它可以检测任何类型的值是否为 NaN。它的语法与Number.isNaN()方法类似,也只接受一个参数,即要检测的值。如果该值为 NaN,则返回 true;否则,返回 false。
console.log(isNaN(NaN)); // true
console.log(isNaN(1)); // false
console.log(isNaN('foo')); // true
isNaN()函数的一个主要优点是,它兼容性更好。它可以在所有 JavaScript 环境中使用,而Number.isNaN()方法则只在ES6及更高版本中可用。
// 在IE中,Number.isNaN()方法不可用
console.log(Number.isNaN(NaN)); // Uncaught ReferenceError: Number.isNaN is not a function
console.log(isNaN(NaN)); // true
总结
Number.isNaN()方法和isNaN()函数都是用来检测数值是否为 NaN 的方法,但两者之间存在着细微区别。Number.isNaN()方法只检测数值是否为 NaN,而不会尝试将其转换为数值,因此它更可靠、更准确。isNaN()函数则兼容性更好,可以在所有 JavaScript 环境中使用。
在实际使用中,如果您需要检测一个值是否为 NaN,并且您确信该值是数值类型,那么使用Number.isNaN()方法更为合适。如果您需要检测一个值是否为 NaN,但您不确定该值是否为数值类型,那么使用isNaN()函数更为合适。