JavaScript全局 parseInt 函數的總結:parseInt(numString, redix);
numString 將要被轉換為Int的字符串。
注意點:
1、可為數字或字符串, 不管怎樣都會使用String(numString)將其轉換成字符串; 如: parseInt(010); // 8 parseInt("010"); // 10
2、如果numString前後有空格,那麼將會忽略空格,如 " 23 ", 將會被解析成 "23";
3、如果numString以數字開頭,字母結尾,解析的時候則會從字母的地方終止,並返回已解析的數字。
redix 要轉換的進制數,該值的范圍是 2 - 36。
注意點:
一、如果用戶指定了該值:
不管指定的值是數字還是字符串,parseInt底層會使用Number對其進行轉換,
轉換後得到的值為0或者NaN,都會忽略,仍使用默認值 10,否則判斷是否是否位於 2-36中,如果不是則返回NaN。
如 parseInt("31", 0)/parseInt("31", "aaa") 等價於 parseInt("31", 10)
二、如果未指定該值:
1、如果 numString 以0x開頭,則該值的默認值是 16;
2、如果 numString 以0開頭,ECMAScript 3 環境該值默認為8,ECMAScript 5已經禁止這種做法,該值默認為10,所以視執行環境而定。
最佳實踐: 使用parseInt時指定redix參數總是有必要的,代碼可讀性強,程序穩定。
parseInt("1", 0); // 1 等價於 parseInt("1", 10)
parseInt("1", "aaa"); // 1 等價於 parseInt("1", 10)
parseInt("2", 1); // NaN ,進制解析異常
parseInt("010"); // 8/10 視環境而定 String("010");// 8/10
parseInt(010); // 8 String(010);// 8
parseInt(0x10); // 16 String(0x10);// 16
parseInt("0x10"); // 16 (String("0x10");// "0x10" ) 等價於 parseInt("0x10", 16)// 16
parseInt(" 23 "); // 23
parseInt(" 23 abc"); // 23
parseInt(" 23abc "); // 23
["1", "2", "3"].map(parseInt); // ["1", NaN, NaN]
parseInt() 函數可解析一個字符串,並返回一個整數。
當參數 radix 的值為 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。
當忽略參數 radix , JavaScript 默認數字的基數如下:
所有主要浏覽器都支持 parseInt() 函數
注意: 只有字符串中的第一個數字會被返回。
注意: 開頭和結尾的空格是允許的。
注意:如果字符串的第一個字符不能被轉換為數字,那麼 parseFloat() 會返回 NaN。
注意:在字符串以"0"為開始時舊的浏覽器默認使用八進制基數。ECMAScript 5,默認的是十進制的基數。
我們將使用 parseInt() 來解析不同的字符串:
<script>以上實例輸出結果:
10注意:舊浏覽器由於使用舊版本的ECMAScript(ECMAScript版本小於ECMAScript 5,當字符串以"0"開頭時默認使用八進制,ECMAScript 5使用的是十進制),所以在解析("010") 將輸出8。