📅  最后修改于: 2023-12-03 15:33:05.357000             🧑  作者: Mango
NaN
是一个特殊的 JavaScript 值,表示不是数字(Not-a-Number)。当执行数学运算失败或者结果未定义时,会返回 NaN
值。
可以将字符串转换为数字,将非数字值转换为数字时会得到 NaN
值。
let num = parseInt("hello");
console.log(num); // NaN
NaN
和任何值都不相等,包括它本身。因此我们可以通过与自身的比较来确认一个值是否是 NaN
。
console.log(NaN === NaN); // false
console.log(isNaN(NaN)); // true
但需要注意的是,isNaN
会尝试将传入的值转换为数字,因此可能会返回意料之外的结果。例如,传入一个空字符串,isNaN
会尝试将其转换为 0
。
console.log(isNaN("")); // false
console.log(isNaN("hello")); // true
如果我们需要严格地判断一个值是否为 NaN
,可以使用 Number.isNaN
。
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("")); // false
console.log(Number.isNaN("hello")); // false
由于 NaN
和任何值都不相等,因此我们可以通过比较操作符(===
或 !==
)来判断一个值是否为 NaN
。但需要注意的是,可能有一些其他的值也不与它们自身相等,例如 undefined
。所以在比较值是否为 NaN
时,需要使用 Number.isNaN
。
我们可以在执行数学运算之前判断是否会返回 NaN
,从而避免出现 NaN
值。例如,如果我们想计算一个数字的平方根,可以使用 Math.sqrt
方法。但是对于负数,这个方法会返回 NaN
。我们可以先判断这个数字是否为负数,如果是的话,就不再执行计算。
function getSqrt(num) {
if (num < 0) {
return NaN;
}
return Math.sqrt(num);
}
console.log(getSqrt(4)); // 2
console.log(getSqrt(-4)); // NaN
NaN
是一个特殊的 JavaScript 值,表示不是数字。NaN
值。NaN
和任何值都不相等,包括它本身。我们可以通过与自身的比较来确认一个值是否是 NaN
。NaN
,可以使用 Number.isNaN
。NaN
,从而避免出现 NaN
值。