JavaScript 的 parseInt() 函數

parseInt() 函數可解析一個字符串,並返回一個整數。

parseInt 可以接受 2 個函數。

parseInt(stringradix) 解析一個字符串並返回指定基數的十進制整數, radix 是2-36之間的整數,表示被解析字符串的基數。

當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。

參數

string

要被解析的值。如果參數不是一個字符串,則將其轉換爲字符串(使用 ToString 抽象操作)。字符串開頭的空白符將會被忽略。

radix 可選

從 2 到 36,表示字符串的基數。例如指定 16 表示被解析值是十六進制數。請注意,10不是默認值!

描述

parseInt函數將其第一個參數轉換爲一個字符串,對該字符串進行解析,然後返回一個整數或 NaN

如果不是NaN,返回值將是以第一個參數作爲指定基數 radix 的轉換後的十進制整數。(例如,radix10,就是可以轉換十進制數,爲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 是 undefined0或未指定的,JavaScript會假定以下情況:

  1. 如果輸入的 string以 "0x"或 “0x”(一個0,後面是小寫或大寫的X)開頭,那麼radix被假定爲16,字符串的其餘部分被當做十六進制數去解析。
  2. 如果輸入的 string以 “0”(0)開頭, radix被假定爲8(八進制)或10(十進制)。具體選擇哪一個radix取決於實現。ECMAScript 5 澄清了應該使用 10 (十進制),但不是所有的瀏覽器都支持。因此,在使用 parseInt 時,一定要指定一個 radix
  3. 如果輸入的 string 以任何其他值開頭, radix 是 10 (十進制)。

如果第一個字符不能轉換爲數字,parseInt會返回 NaN

爲了算術的目的,NaN 值不能作爲任何 radix 的數字。你可以調用isNaN函數來確定parseInt的結果是否爲 NaN。如果將NaN傳遞給算術運算,則運算結果也將是 NaN

要將一個數字轉換爲特定的 radix 中的字符串字段,請使用 thatNumber.toString(radix)函數。

總結

通常我們都會使用 parseInt 來轉換成一個 10 進制的數。

一個使用場景是你在參數中傳入了一個字符串來表示當前時間的 Unix 時間,你需要將這個時間首先轉換成整數後再用來構造 moment 對象。

 

parseInt -01

 

在 IntelliJ IDEA 中,使用了不同的顏色來區分結果的類型。

同時如果是字符的話,IntelliJ IDEA 會使用引號。

 

parseInt -02

 

如果上面圖中的對比。

當然,你也可以直接寫成

moment.utc(+duplicateData.timeStamp)

在方法前面添加一個 + 號也會幫你完成轉換的。

有個同學做了下面的一個表,覺得挺好的,能夠幫助你在轉換的時候參考下。

 

QNMfI

 

parseInt 轉換和可能出現 NaN 的情況。

 

https://www.ossez.com/t/javascript-parseint/13811

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章