parseInt原來是這樣用的


  今天在群里無意中看到了這樣一個問題,突然發現不會,結果運行一看,懵逼了,不知道為什么???(結果是啥?自己去試試看)

  

 

  現在我們還是先來復習一下parseInt()這個知識點吧!

  

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

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

  當忽略參數 radix , JavaScript 默認數字的基數如下:

    如果 string 以 "0x" 開頭,parseInt() 會把 string 的其余部分解析為十六進制的整數

    如果 string 以 0 開頭,那么 ECMAScript v3 允許 parseInt() 的一個實現把其后的字符解析為八進制或十六進制的數字。

    如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析為十進制的整數。

  提示和注釋

  注意: 只有字符串中的第一個數字會被返回。

  注意: 開頭和結尾的空格是允許的。

  注意:如果字符串的第一個字符不能被轉換為數字,那么 parseFloat() 會返回 NaN。

  注意:在字符串以"0"為開始時舊的瀏覽器默認使用八進制基數。ECMAScript 5,默認的是十進制的基數。

  下面來看具體的實例吧:

  

  下面再來一個稍微難點的:

  

  很奇怪有木有,其實是這樣的,當小數點后的0的個數小於等於5個時,會采用字面量形式直接表示,當小數點后0的個數大於5個時,會采用科學計數法來表示,即:0.000005不會采用科學計數法,而0.0000005則會轉換為5e-7,parseInt方法不會將"e"視為數字,因此只是將5轉換為10進制,還是5。

  同理,當小數點前數字位數為21及以下的時候,會采用字面量形式直接表示,而當小數點前數字位數大於21的時候。會采用科學計數法,因此6000000000000000000000會轉換為科學計數法,為6e+21,將6轉換為10進制還是6

 

   

  為什么會這樣?其實是這樣的,第一個中,會將2進制的11轉換為10進制,自然就是3了。第二個中,會先將011按八進制來解析,就是9了,而二進制中不存在9,因此為NaN

至於第三個嘛,會將011按八進制解析為9,parseInt() 將把它解析為十進制的整數,自然就是9了

  好了,就說到這里了,至於開篇講到的那個問題,我也不知道為什么???

 

  這里再來一波,懵逼了有木有?自己解決去吧。

  

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM