2017-09-02 104 views
-3

在開發人員控制檯中運行的代碼如下所示。爲什麼parseInt返回字符串的[0]索引中存在的數字,但不返回字符串中任何其他索引中存在的數字?爲什麼parseInt函數( '1歲'),返回1,但parseInt函數( '我是1歲')將返回NaN?

parseInt('i am 1 year old') 
// output NaN 
parseInt('1 year old') 
// output 1 

的原因是什麼,爲什麼它的行爲這樣的嗎?

+1

的可能的複製[?爲什麼使用Javascript parseInt函數( '0x4A')返回相同的parseInt函數( '0x4Avv')](https://stackoverflow.com/questions/29781856/爲什麼此結果JavaScript的parseint0x4a回報最相同的-parseint0x4avv) – Thilo

+1

它正試圖解析字符串。它看到第一個字符是一個數字,之後的所有內容都不是,所以它只看到1.當它試圖轉換我時,它看到* i *不是數字。 '和'parseInt函數('16蠟燭);你可以用parseInt函數的'各種輸入測試(「5trees」)看到它' – Fallenreaper

+1

因爲這是它是如何定義的工作,作爲[文件]中明確指出(HTTPS: //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt)。 – 2017-09-02 04:36:15

回答

2

parseInt函數讀取字符串,它不斷獲得數點。所以,10 is a number返回10,因爲函數停在第三個字符,這是一個空格。但在i am 1 year old情況下,它停在i,因爲它不是一個數字,並返回NaN代替。

如果parseInt函數遇到一個字符不在 指定基數的數字,它忽略它和所有後續字符和 返回解析到該點的整數值。 parseInt將 數字截斷爲整數值。前後空格是允許的。

參考:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt

+0

的文檔的相關摘錄是這樣的:「從給定的字符串分析的一個整數如果第一個字符不能被轉換爲數字,則返回NaN。」。答案完全正確,但不知道爲什麼有人會爲此付出代價。 – ishegg

+1

嗯,爲了公平起見,我認爲關於主要和尾隨空間的信息很重要。另外,我並不知道基數的考慮因素。所以我加了這個段落。 – Nisarg