2 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超6個贊
NaN
是一個特殊的數(shù)值。Number.isNaN
驗證傳入的值是否等于NaN
,因為“正?!北容^不起作用(NaN == NaN
根據(jù)false
定義)。
與其他一些方法不同,它Number.isNaN
不執(zhí)行類型轉(zhuǎn)換。是一個字符串值,因此它不能是。'abc'
NaN
該規(guī)范定義Number.isNaN
為:
如果 Type(?number?) 不是 Number,則返回
false
。如果數(shù)字是
NaN
,則返回true
。否則,返回
false
.
請注意,還有全局isNaN
函數(shù),其行為有所不同:如果您給它一個不是數(shù)字類型的值,它會在進(jìn)行檢查之前將其轉(zhuǎn)換為數(shù)字類型。這isNaN('abc')
是true
因為如果您'abc'
使用默認(rèn)的字符串到數(shù)字轉(zhuǎn)換來轉(zhuǎn)換為數(shù)字,您會得到NaN
;?而是Number.isNaN('abc')
因為false
它不進(jìn)行這種轉(zhuǎn)換。

TA貢獻(xiàn)1824條經(jīng)驗 獲得超5個贊
這里沒有添加任何新內(nèi)容。
只是想讓初學(xué)者更清楚一點。
isNaN(value)檢查值是否字面意思是“ NaN ”。
如果值為“ NaN ”,isNaN(value)則返回true。
如果value是其他任何內(nèi)容(例如number、string、undefined、null、Infinity或其他任何內(nèi)容),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是否是數(shù)字。
添加回答
舉報