關於parseInt你不知道的事

先來看一個瀏覽器

parseInt(false,16)

若是你知道上面這行代碼輸出了250 那麼恭喜你...函數

我成功騙到了你的時間..你能夠出去了..spa

——————————————————————————————————code

先來看下parseInt的定義用法:blog

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

可是爲何會出現第一行返回250的狀況呢字符串

繼續string

parseInt(string, radix)

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

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

  • 若是 string 以 "0x" 開頭,parseInt() 會把 string 的其他部分解析爲十六進制的整數。
  • 若是 string 以 0 開頭,那麼 ECMAScript v3 容許 parseInt() 的一個實現把其後的字符解析爲八進制或十六進制的數字。
  • 若是 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析爲十進制的整數。

 

上面大概的意思就是:當radix有參數時,會以radix爲進制解析string

回頭看第一行代碼 

parseInt(false,16) //250

意思就是 以16進制的方式 將false當作字符串解析 

f表明16 a表明11 l解析不出 

將fa轉爲十進制就是250啦 

再來幾個

console.log(parseInt(1/0,19))  //18
    console.log(parseInt(parseInt,16)) //15
    console.log(parseInt('0x10')) //16
    console.log(parseInt('10',2)) //2

第一個 1/0 以19進制解析 1/0計算瀏覽器報Infinity 19進制是 0-9 a-i 只能解析出i 結果爲18

第二個 parseInt並非函數 console.log(parseInt)瀏覽器解析出 :function parseInt() 好辦了 f爲15 

第三個 0x爲默認十六進制的開頭 解析10 16沒毛病

第四個 2進制解析10 結果是2

很容易吧 

總結的方法就是 若是你不肯定第一個參數是什麼東西 用瀏覽器解析一下 再進行進制換算

相關文章
相關標籤/搜索