parseInt(string,radix)方法是將輸入字符串轉化為數值,兩個輸入參數中string為要轉化的字符串,radix可省略,是瀏覽器以幾進制來解讀輸入的string。
舉幾個例子就能夠對該方法有基本的了解了,如下:
parseInt("123"); //123
parseInt("123ab123"); //輸出123 因為出現字母所以該字母及之后的字符都不被解析
若輸入字符串首位是0或者0x之外的數字,則在radix缺省的情況下,默認解讀為10進制。
0X默認解讀為16進制
parseInt("0x10"); //字符串以0x開頭則將之后的數字按16進制解讀,16進制的10也就是十進制的16, 因此輸出為16
parseInt("0xa"); //10,要注意16進制包括0~9,a~f (也就是10~15),超出該范圍的字符不被解讀。
parseInt("0xg"); //NAN
這三個例子分別等價於 parseInt("0x10",16) parseInt("0xa",16) parseInt("0xg",16)
以0開頭的默認解讀為八進制,但是不同瀏覽器解讀方式不同,
parseInt("011"); //chrome下輸出為11也就是會忽略首位的0,將011當成10進制解讀,別的瀏覽器未測試--
parseInt("011",8); //此時會輸出正確的9
因為這個坑,所以建議需要以八進制解讀時,帶上第二參數radix並設置為8,以免出問題
parseInt("09",8); //八進制取值范圍為0~7,不包括9,因此9不能被解讀,這時相當於parseInt("0",8);輸出0
最后有一個特殊情況:
parseInt("0.000000434"); //4
parseInt("0.00000434"); //0
造成這種情況的原因可能是因為:
document.write(0.000000434+"<br/>"); //4.34e-7
document.write(0.00000434+"<br/>");//0.00000434
當小數點后有6個或者以上的0時,會以科學記數法存儲,所以--。
部分內容參考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt