先來看一個瀏覽器
parseInt(false,16)
若是你知道上面這行代碼輸出了250 那麼恭喜你...函數
我成功騙到了你的時間..你能夠出去了..spa
——————————————————————————————————code
先來看下parseInt的定義用法:blog
parseInt() 函數可解析一個字符串,並返回一個整數。ip
可是爲何會出現第一行返回250的狀況呢字符串
繼續string
parseInt(string, radix)
當參數 radix 的值爲 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。it
當忽略參數 radix , JavaScript 默認數字的基數以下:io
上面大概的意思就是:當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
很容易吧
總結的方法就是 若是你不肯定第一個參數是什麼東西 用瀏覽器解析一下 再進行進制換算