關於parseInt函數的一切


parseInt()

作用是將參數(通常為字符串)強制轉換為整數。

它有兩個參數,第二個可以省略,我們先展示常見的用法

1. 轉換規則:依次將字符串中從左到右的數字部分轉為整數,一旦轉換失敗,返回NaN。

(1) 參數是字符串類型:

var a = parseInt(‘10’); //將字符串轉成整數類型
console.log(a); // 10

var b = parrseInt(‘10true’); //將有效數字部分轉為整數,提取開頭數字部分
console.log(b); // 10

var c = parseInt(‘10true20’); //只將開頭有效部分轉為整數
console.log(c); //10

var d = parseInt(‘045zoo’); //開頭部分轉為整數,數字前面的0省略
console.log(d); //45

var f = parseInt(‘34.5’); //整數部分,小數點非數字部分,舍去
console.log(f); //34

var g = parseInt(‘a3’); //若不是以數字開頭,轉為NaN(Not a Number 不是數字)的特殊數值
console.log(g); //NaN

(2) 參數是數字類型:

var a = parseInt(3.4); //依然轉為數字,但是取整
console.log(a); //3

(3) 其它數據類型:只要開頭不包含有效數字,結果都轉為NaN

var a = parseInt(true);
 console.log(a); //NaN
 
 var b = parseInt(null);
 console.log(b); //NaN
 
 var c = parseInt(undefined);
 console.log(c); //NaN

 var d = parseInt([]);
 console.log(d); //NaN

 var e = parseInt({});
 console.log(e); //NaN

接下來,我們看第二個參數的用法

第二個參數:表示進制,范圍2~36(用來說明第一個參數的進制規則)
var a = parseInt(‘99’,10); // 如果字符串為十進制內容,該參數可省略
 console.log(a); // 99
 
 var a = parseInt(‘1001’,2); // ‘1001’ 符合二進制規則, 轉為十進制整數
 console.log(a); // 9

 var a = parseInt(‘1001’,10); // ‘1001’同樣符合十進制, 轉為十進制整數
 console.log(a); // 1001

 var b = parseInt(‘234’,2); //‘234’不符合二進制的規則
 console.log(b); // NaN

 var b = parseInt(‘abcde’,2); //‘abcde’不符合二進制的規則
 console.log(b); // NaN

 var c = parseInt(‘1022’,2); //‘10’部分屬於二進制,但‘22’不是,將開頭有效的部分提取並轉成十進制
 console.log(c); //2

一些特殊說明

如果以0x或0X開頭,即使不說明進制規則,也能識別
var e = parrseInt(‘0xa’); //0x是十六進制的表示方法,a是十六進制中的10,轉換成整數后自動切換為十進制
console.log(e); //10

盡量不使用出現e的數字,由於只能識別開頭部分,會造成結果混亂
此時應使用parseFloat方法替代

parseInt("6.022e23", 10);        // 返回 6
parseInt(6.022e2, 10);          // 返回 602

非常大或非常小的數字

parseInt(4.7 * 1e22, 10); // 非常大的數值變成 4
parseInt(0.00000000000434, 10); // 非常小的數值變成 4

在最新的ES5規范中,以0開頭的數字,已經不能再被識別為八進制了。

parseInt("011");  //會當成10進制轉換為   11
parseInt("011", 8)   //指定了8進制,結果為  9

總結:

以上測試均來自最新版的chrome瀏覽器,並不能確保所有瀏覽器行為一致。為了保證開發中不出現意外,建議使用parseInt方法時,一律帶上第二個參數!

 


免責聲明!

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



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