parseInt() 函數可解析一個字符串,並返回一個整數。
parseInt 可以接受 2 個函數。
parseInt(string, radix) 解析一個字符串並返回指定基數的十進制整數, radix
是2-36之間的整數,表示被解析字符串的基數。
當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。
參數
string
要被解析的值。如果參數不是一個字符串,則將其轉換爲字符串(使用 ToString
抽象操作)。字符串開頭的空白符將會被忽略。
radix
可選
從 2
到 36
,表示字符串的基數。例如指定 16 表示被解析值是十六進制數。請注意,10不是默認值!
描述
parseInt
函數將其第一個參數轉換爲一個字符串,對該字符串進行解析,然後返回一個整數或 NaN
。
如果不是NaN
,返回值將是以第一個參數作爲指定基數 radix 的轉換後的十進制整數。(例如,radix
爲10
,就是可以轉換十進制數,爲8
可以轉換八進制數"07",16
可以轉換十六進制數"0xff",以此類推)。
對於 radix
爲10
以上的,英文字母表示大於9
的數字。例如,對於十六進制數(基數16
),則使用 A
到 F
。
如果 parseInt
遇到的字符不是指定 radix
參數中的數字,它將忽略該字符以及所有後續字符,並返回到該點爲止已解析的整數值。 parseInt
將數字截斷爲整數值。 允許前導和尾隨空格。
由於某些數字在其字符串表示形式中使用e字符(例如 6.022×23
表示 6.022e23
),因此當對非常大或非常小的數字使用數字時,使用 parseInt
截斷數字將產生意外結果。 parseInt
不應替代Math.floor()
。
parseInt
可以理解兩個符號。+
表示正數,-
表示負數(從ECMAScript 1開始)。它是在去掉空格後作爲解析的初始步驟進行的。如果沒有找到符號,算法將進入下一步;否則,它將刪除符號,並對字符串的其餘部分進行數字解析。
如果 radix
是 undefined
、0
或未指定的,JavaScript會假定以下情況:
- 如果輸入的
string
以 "0x
"或 “0x
”(一個0,後面是小寫或大寫的X)開頭,那麼radix被假定爲16,字符串的其餘部分被當做十六進制數去解析。 - 如果輸入的
string
以 “0
”(0)開頭,radix
被假定爲8
(八進制)或10
(十進制)。具體選擇哪一個radix取決於實現。ECMAScript 5 澄清了應該使用 10 (十進制),但不是所有的瀏覽器都支持。因此,在使用parseInt
時,一定要指定一個 radix。 - 如果輸入的
string
以任何其他值開頭,radix
是10
(十進制)。
如果第一個字符不能轉換爲數字,parseInt
會返回 NaN
。
爲了算術的目的,NaN
值不能作爲任何 radix
的數字。你可以調用isNaN
函數來確定parseInt
的結果是否爲 NaN
。如果將NaN傳遞給算術運算,則運算結果也將是 NaN
。
要將一個數字轉換爲特定的 radix
中的字符串字段,請使用 thatNumber.toString(radix)
函數。
總結
通常我們都會使用 parseInt 來轉換成一個 10 進制的數。
一個使用場景是你在參數中傳入了一個字符串來表示當前時間的 Unix 時間,你需要將這個時間首先轉換成整數後再用來構造 moment 對象。
在 IntelliJ IDEA 中,使用了不同的顏色來區分結果的類型。
同時如果是字符的話,IntelliJ IDEA 會使用引號。
如果上面圖中的對比。
當然,你也可以直接寫成
moment.utc(+duplicateData.timeStamp)
在方法前面添加一個 + 號也會幫你完成轉換的。
有個同學做了下面的一個表,覺得挺好的,能夠幫助你在轉換的時候參考下。
parseInt 轉換和可能出現 NaN 的情況。