2 回答
TA贡献1829条经验 获得超6个赞
NaN
是一个特殊的数值。Number.isNaN
验证传入的值是否等于NaN
,因为“正常”比较不起作用(NaN == NaN
根据false
定义)。
与其他一些方法不同,它Number.isNaN
不执行类型转换。是一个字符串值,因此它不能是。'abc'
NaN
该规范定义Number.isNaN
为:
如果 Type( number ) 不是 Number,则返回
false
。如果数字是
NaN
,则返回true
。否则,返回
false
.
请注意,还有全局isNaN
函数,其行为有所不同:如果您给它一个不是数字类型的值,它会在进行检查之前将其转换为数字类型。这isNaN('abc')
是true
因为如果您'abc'
使用默认的字符串到数字转换来转换为数字,您会得到NaN
; 而是Number.isNaN('abc')
因为false
它不进行这种转换。
TA贡献1824条经验 获得超5个赞
这里没有添加任何新内容。
只是想让初学者更清楚一点。
isNaN(value)检查值是否字面意思是“ NaN ”。
如果值为“ NaN ”,isNaN(value)则返回true。
如果value是其他任何内容(例如number、string、undefined、null、Infinity或其他任何内容),isNaN(value)则返回false。
//Examples that Return FALSE
//
console.log(20); // value is 20 - is NOT NaN
console.log(isNaN(20)); // false
console.log('20'); // value is "20" - is NOT NaN
console.log(isNaN('20')); // false
console.log(23 / 0); // is Infinity - Is NOT NaN
console.log(isNaN(23 / 0)); // false
//Examples that Return TRUE
//
console.log(parseInt('X20')); // is NaN
console.log(isNaN(parseInt('X20'))); // true
console.log(+'20X'); // is NaN
console.log(isNaN(+'20X')); // true
console.log(Math.sqrt(-1)); // is NaN
console.log(isNaN(Math.sqrt(-1))); // true
console.log(7 ** NaN); // is NaN
console.log(isNaN(7 ** NaN)); // true
console.log(0 * Infinity); // is NaN
console.log(isNaN(0 * Infinity)); // true
console.log('foo' / 30); // is NaN
console.log(isNaN('foo' / 30)); // true `
正如正确指出的,最好用来Number.isFinite(value)检查value是否是数字。
添加回答
举报