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是否是數字。
添加回答
舉報