2015-02-07 63 views
0

在閱讀JavaScript中的NaN時,我遇到了一些示例。然後我開始測試更多,我對結果感到驚訝。比如我想知道爲什麼要使用JavaScript解釋兩個下方几乎相同的語句不同爲什麼parseInt(「123abcd」)和parseInt(「abcd123」)的結果在JavaScript中有所不同?

parseInt("123abcd") // 123 
parseInt("abcd123") // NaN 

爲什麼要使用JavaScript的parseInt函數(「123abcd」)返回123,爲什麼對於NaN的另一個?

而且爲什麼

isNaN("1") //false 
But 
isNaN("hello") // true -----> This seems logical because hello is a not number 

JavaScript似乎總能帶給我們驚喜!

回答

3

對於第一種情況

MDN:
如果第一個字符不能被轉換爲數字,parseInt函數返回NaN。

第二,isNaN將輸入轉換爲Number,然後檢查它是否是一個數字。

所以"1"1因此是一個數字。

另外,值得一提的是使用10作爲基數以避免任何誤解。

parseInt(input, 10); 
+0

不過這給我留下了一個問題:爲什麼慣例是正確解析字符串開頭的號碼,但不能以數字結尾的字符串。對我來說,'parseInt'總是隨意的。爲什麼不解析字符串中的第一個數字(例如''「hello123Bye」')? – Mouser 2015-02-07 13:46:26

+0

@Mouser就是這樣設計的。它從第一個看起來。你可以使用自定義函數來做你想做的事情。 – 2015-02-07 13:58:12

+0

@Mouser如果你的問題是「爲什麼這樣?」,問Brendan Eich(我認爲)。我總是想知道爲什麼他們認爲像「123abcd」這樣的無效數字應該被認爲是有效的,而不是期望解析任何隨機數字。但我想我們永遠不會知道... – Rhumborl 2015-02-07 13:58:24

相關問題