2014-12-06 60 views

回答

2

NaN屬性表示「不是數字」的值。這個特殊的值是由於一個操作數是非數字的(例如「abc」/ 4)或者因爲操作的結果是非數字的(例如,嘗試分割由零)。

雖然這看起來很簡單,但NaN的一些有些令人驚訝的特徵可能會導致毛病,如果一個人不知道它們。

一方面,儘管爲NaN表示「不是一個數字」,它的類型,無論你相信與否,編號:

console.log(typeof NaN === "number"); // logs "true" 

此外,NaN的比什麼 - 甚至本身! - 是假的:

console.log(NaN === NaN); // logs "false" 

一個半可靠的方法來測試一個數是否等於楠與內置函數isNaN(), 但即使使用isNaN() is an imperfect solution.

更好的解決方案無論是要使用value!==值,只有當值等於NaN時纔會生成true。另外,ES6提供了一個新的Number.isNaN()函數,它與舊的全局isNaN()函數不同,也更加可靠。

+0

'typeof value ===「number」&& isNaN(value)''? – Tomalak 2014-12-06 09:27:20

+0

這也是一個很好的解決方案。 – user2466202 2014-12-06 09:31:18

相關問題