📜  typeof nan - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:39.107000             🧑  作者: Mango

typeof NaN - JavaScript

NaN 是 JavaScript 中一个特殊的值,表示“Not a Number”(不是数字)。当在数学运算中尝试使用非数值时,结果将为 NaN。但是,NaN 的行为和类型都与数字不同,因此对其执行任何操作都将导致结果为 NaN

typeof 运算符

typeof 是 JavaScript 中的一个运算符,可以返回操作数的数据类型。当应用于 NaN 时,typeof 将返回 'number'

console.log(typeof NaN); // 'number'

这可能会让人感到困惑,但这是因为 NaN 被认为是一种非常特殊的数字。在 JavaScript 中,NaN 是唯一的一个不等于自身的值。这意味着,您不能将 NaN 与任何值(包括 NaN 本身)进行相等性检查。

判断 NaN

由于 NaN 无法与其他值进行相等性检查,因此 JavaScript 提供了一个特殊的全局函数 isNaN(),用于判断一个值是否为 NaN

console.log(isNaN(NaN));       // true
console.log(isNaN(123));       // false
console.log(isNaN('hello'));   // true
console.log(isNaN(true));      // false
console.log(isNaN(null));      // false
console.log(isNaN(undefined)); // true

需要注意的是,isNaN() 函数在判断一个值是否为 NaN 时会先尝试将其转换为一个数字。如果转换成功且结果是 NaN,则返回 true;否则返回 false。这就是为什么 isNaN('hello') 返回 true 的原因,因为字符串 'hello' 无法转换为数字。

为了避免这种情况,可以使用 Number.isNaN() 方法,它不会尝试将其参数转换为数字。

console.log(Number.isNaN(NaN));       // true
console.log(Number.isNaN(123));       // false
console.log(Number.isNaN('hello'));   // false
console.log(Number.isNaN(true));      // false
console.log(Number.isNaN(null));      // false
console.log(Number.isNaN(undefined)); // false
总结

尽管 NaN 的行为和类型与数字不同,但 JavaScript 将其视为一种特殊的数字值。使用 typeof 运算符返回值为 'number',使用 isNaN() 函数判断是否为 NaN。对于更严格的检查,可以使用 Number.isNaN() 方法。