Javascipt 裡面有一種型別在你轉成整數 parseInt或轉成浮點數 parseFloat時會出現:
alert(p);
結果:NaN
出現NaN這個型別代表輸出失敗,而NaN是什麼?
NaN代表的就是「Not a Number」 ,不是一個數字。要檢查是不是NaN可用函數 isNaN來檢查:
NaN比對範例
基本上只要結果不是數值的就是NaN,但有一些「特別的」例外,例如空字串或真假(true/false)
isNaN == false,是數值
isNaN(123) //false
isNaN(-1.23) //false
isNaN(5-2) //false
isNaN(0) //false
isNaN(\0x32) //false 十六進位
isNaN('123') //false
isNaN('') //false
isNaN(null) //false
isNaN(true) //false
isNaN == true,不是數值
isNaN(Object()) //true 物件本身
isNaN(function(){return 1;}) //true 函數就算return 1,還是NaN
isNaN(xyz) //true var xyz; 宣告後沒賦值的變數,等同 undefined
isNaN("123abc") //true
isNaN(undefined) //true
isNaN('NaN') //true
isNaN(NaN) //true
isNaN(0 / 0) //true
isNaN('Hello') //true
isNaN('2005/12/12') //true
ParseInt(ParseFloat)結果範例
console.log(parseInt(\x032)); // SyntaxError: illegal character
console.log(parseInt("123abc")); //123
console.log(parseInt("abc12345")); // NaN
console.log(parseInt("123.456")); //123
console.log(parseInt("123.456ab")); //123
console.log(parseInt("abc123.456")); // NaN
console.log(parseInt("abcd")); // NaN
console.log(parseInt(".12345")); // NaN
console.log(parseInt("")); // NaN
console.log(parseInt(undefined)); // NaN
console.log(parseInt(null)); // NaN
console.log(parseInt(NaN)); // NaN
console.log(parseInt(false)); // NaN
補充
Select的選項option如果設定是disabled的話,傳出來的值也是NaN
參考資料
[1] https://www.w3schools.com/Jsref/jsref_isnan.asp
原文 2010-07-19 00:59:42