js parseInt()與Number()區別
阿新 • • 發佈:2018-12-21
說到轉換成數字型別,我首先想到的是parseInt()方法,後來接觸多了才發現還有一個Number()方法,同樣是轉換成數字型別,這兩種方法有什麼不同的呢?
1.parseInt():
parseInt(string,radix):將字串解析轉化為數字型別,返回的是整數;
string:待被解析的字串;
radix:表示要解析轉換的進位制
PS:(如果省略該引數或其值為 0,則數字將以 10 為基礎來解析。如果它以 “0x” 或 “0X” 開頭,將以 16 為基數。如果該引數小於 2 或者大於 36,則 parseInt() 將 返 回 NaN);
例:
alert(parseInt("10")) ; //10
alert(parseInt("19",10)); //19,1*10^1+9*10^0=19
alert(parseInt("11","2")); //3,1*2^1+1*2^0=3
alert(parseInt("17","8")); //15,1*8^1=7*8^0=15
當遇到數字後帶有字串,則只返回前面的數字(例parseInt(123mgn)=123),如果字串的第一個字元不能被轉換為數字,那麼 parseFloat() 會返回 NaN。
2.Number()
Number(object):將物件的值轉換為數字;
如果物件的值無法轉換為數字,那麼 Number() 函式返回 NaN。
如果引數是 Date 物件,Number() 返回從 1970 年 1 月 1 日至今的毫秒數。
<script type="text/javascript"> var test1= new Boolean(true); var test2= new Boolean(false); var test4= new String("999"); var test5= new String("999 888"); document.write(Number(test1)+ "<br />"); //1 document.write(Number(test2)+ "<br />"); //0 document.write(Number(test4)+ "<br />"); //999 document.write(Number(test5)+ "<br />"); //NaN </script>
為了更直觀的體會兩者之間的區別,我們看一下兩種方法的結果:
//當字串只有數字組成
var numbeTrans="9898";
alert(parseInt(numberTrans)); //9898
alert(Number(numberTrans)); //9898
//當數字只有字母組成
var numbeTrans="abab";
alert(parseInt(numberTrans)); //NaN
alert(Number(numberTrans)); //NaN
//當字串由字母與數字組成
var numbeTrans="123ab";
alert(parseInt(numberTrans)); //123
alert(Number(numberTrans)); //NaN
//當字串為小數時
var numbeTrans="123.123";
alert(parseInt(numberTrans)); //123
alert(Number(numberTrans)); //123.123
//當字串為空null時
var numbeTrans="null";
alert(parseInt(numberTrans)); //NaN
alert(Number(numberTrans)); //0
//當字串為空“ ”時
var numbeTrans=" ";
alert(parseInt(numberTrans)); //NaN
alert(Number(numberTrans)); //0