📅  最后修改于: 2023-12-03 15:05:39.107000             🧑  作者: Mango
typeof NaN
- JavaScriptNaN
是 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()
方法。