您好,登錄后才能下訂單哦!
好程序員web前端培訓(xùn)分享關(guān)于parseInt函數(shù)的一切 , 關(guān)于JS的手動類型轉(zhuǎn)換,parseInt是我們最早接觸的函數(shù)之一。
接下來我們詳細(xì)的總結(jié)一下它的用法,你可以點擊收藏,以備不時之需。
parseInt()
作用 是將參數(shù)(通常為字符串)強(qiáng)制轉(zhuǎn)換為整數(shù)。
它有兩個參數(shù),第二個可以省略,我們先展示常見的用法
1. 轉(zhuǎn)換規(guī)則: 依次將字符串中從左到右的數(shù)字部分轉(zhuǎn)為整數(shù),一旦轉(zhuǎn)換失敗,返回NaN。
(1) 參數(shù)是字符串類型:
var a = parseInt ( ‘ 10 ’ ); //將字符串轉(zhuǎn)成整數(shù)類型 console.log(a); // 10 var b = parrseInt( ‘ 10 true ’ ); //將有效數(shù)字部分轉(zhuǎn)為整數(shù),提取開頭數(shù)字部分 console.log(b); // 10 var c = parseInt ( ‘ 10 true20 ’ ); //只將開頭有效部分轉(zhuǎn)為整數(shù) console.log(c); //10 var d = parseInt ( ‘ 045 zoo ’ ); //開頭部分轉(zhuǎn)為整數(shù),數(shù)字前面的0省略 console.log(d); //45 var f = parseInt ( ‘ 34.5 ’ ); //整數(shù)部分,小數(shù)點非數(shù)字部分,舍去 console.log(f); //34 var g = parseInt ( ‘ a3 ’ ); //若不是以數(shù)字開頭,轉(zhuǎn)為NaN(Not a Number 不是數(shù)字)的特殊數(shù)值 console.log(g); //NaN
(2) 參數(shù)是數(shù)字類型:
var a = parseInt ( 3.4 ); //依然轉(zhuǎn)為數(shù)字,但是取整 console.log(a); //3
(3) 其它數(shù)據(jù)類型:只要開頭不包含有效數(shù)字,結(jié)果都轉(zhuǎn)為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
接下來,我們看第二個參數(shù)的用法
第二個參數(shù):表示進(jìn)制,范圍2~36(用來說明第一個參數(shù)的進(jìn)制規(guī)則)
var a = parseInt ( ‘ 99 ’ , 10 ); // 如果字符串為十進(jìn)制內(nèi)容,該參數(shù)可省略 console.log(a); // 99
var a = parseInt ( ‘ 1001 ’ , 2 ); // ‘1001’ 符合二進(jìn)制規(guī)則, 轉(zhuǎn)為十進(jìn)制整數(shù) console.log(a); // 9
var a = parseInt ( ‘ 1001 ’ , 10 ); // ‘1001’同樣符合十進(jìn)制, 轉(zhuǎn)為十進(jìn)制整數(shù) console.log(a); // 1001
var b = parseInt ( ‘ 234 ’ , 2 ); //‘234’不符合二進(jìn)制的規(guī)則 console.log(b); // NaN
var b = parseInt ( ‘ abcde ’ , 2 ); //‘a(chǎn)bcde’不符合二進(jìn)制的規(guī)則 console.log(b); // NaN
var c = parseInt ( ‘ 1022 ’ , 2 ); //‘10’部分屬于二進(jìn)制,但‘22’不是,將開頭有效的部分提取并轉(zhuǎn)成十進(jìn)制 console.log(c); //2
如果以0x或0X開頭,即使不說明進(jìn)制規(guī)則,也能識別
var e = parrseInt( ‘ 0xa ’ ); //0x是十六進(jìn)制的表示方法,a是十六進(jìn)制中的10,轉(zhuǎn)換成整數(shù)后自動切換為十進(jìn)制 console.log(e); //10
盡量不使用出現(xiàn)e的數(shù)字,由于只能識別開頭部分,會造成結(jié)果混亂 此時應(yīng)使用parseFloat方法替代
parseInt ( "6.022e23" , 10 ); // 返回 6 parseInt ( 6.022e2 , 10 ); // 返回 602
非常大或非常小的數(shù)字
parseInt ( 4.7 * 1 e22, 10 ); // 非常大的數(shù)值變成 4 parseInt ( 0.00000000000434 , 10 ); // 非常小的數(shù)值變成 4
在最新的ES5規(guī)范中,以0開頭的數(shù)字,已經(jīng)不能再被識別為八進(jìn)制了。
parseInt ( "011" ); //會當(dāng)成10進(jìn)制轉(zhuǎn)換為 11 parseInt ( "011" , 8 ) //指定了8進(jìn)制,結(jié)果為 9
總結(jié):
以上測試均來自最新版的chrome瀏覽器,并不能確保所有瀏覽器行為一致。為了保證開發(fā)中不出現(xiàn)意外, 建議使用parseInt方法時,一律帶上第二個參數(shù) !
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。