js數據類型轉換spa
數據類型轉換要先說下typeof屬性。字符串
typeof屬性做用:判斷數據類型。string
例如: console.log(typeof "aaa");獲得string。console
var b=null;console.log(typeof b); 獲得object。class
1.強制轉換(主動將數據的類型強制轉換爲某種類型)object
(1)String(數據) 強轉爲字符串數據類型
例如數據
var num=null;類型轉換
var a=String(num);co
console.log(a); //null
console.log(typeof num); //object
console.log(typeof a); //string
(2)數據.toString(進制) 強轉爲任意進制的字符串
null和undefined是不能轉換的,
toString能夠將任何數字轉換爲任意進制,進制必須大於等於2而且小於等於36,也就是最小是2進制,最大是36進制,由於數字字母0~9+A~F有36個。
例如
var num=10;
var a=num.toString(2);
console.log(a); //1010
console.log(typeof num); //number
console.log(typeof a); //string
(3)數據.toFixed(小數點後幾位) 強轉爲四捨五入保留位數的字符串,可是有精度偏差
例如
var num=10.35;
var a=num.toFixed(1);
console.log(a); //10.3
(4)Number(數據) 強轉爲數值
NaN(非數值 類型是number)
純字符---> NaN
純數字--->數字
部分數字,部分字符--->NaN
布爾值--->數字 true--->1 false--->0
undefined--->NaN
null--->0
例如
var str="你好"; //純字符 NaN
var str="12"; //純數字 數字
var str="1a"; //部分數字,部分字符 仍是NaN
var str=""; //0
var str=" "; //0
var num=Number(str);
console.log(num);
(5)parseInt(數據,進制) 強轉爲整數
能夠將指定進制字符串轉換爲10進制數值,是toString()逆轉換。
若是沒指定進制,則表示將10進制字符串轉換爲10進制數值。
純字符---> NaN
純數字--->數字
部分數字,部分字符--->經過parseInt轉換數值能夠從開始轉換到字符前爲止變成數值,若是第一位是字符,返回NaN
布爾值--->NaN
undefined--->NaN
null--->NaN
例如
var str="你好"; //NaN
var str="20.78";
var num=parseInt(str); //20,若是 第二個沒有填值,則表示10進制數值轉換爲10進制數值
var str="1010";
var num=parseInt(str,2);//10,將2進制字符串轉換爲10進制數值
var str="16a";//16
var num=parseInt(str);//第二個沒有填值,按照10進制轉換 16
var str="a16";// NaN
(6)parseFloat(數據,進制); 強轉爲小數
強轉小數和parseInt相似,只不過能夠保留小數位
(7)Boolean(數據) 強轉爲布爾值
"" 0 false,undefined,null,NaN 轉換爲布爾值都會變成false,除此以外轉換都是true。
例如
var a=" ";
console.log(Boolean(a)); //true
var b=3;
var c=3;
console.log(Boolean(b-c)); //false
var str="0a";
console.log(Boolean(str)); //true
2.隱式轉換(當數據類型不相同時,作數據的運算,就會自動將兩端的數據轉換爲相同類型而後運算,這是隱式轉換,隱式轉換聽從與 String() Number() Boolean() )
(1)+
字符相加 就是將字符首尾相連,字符合並
例如
var a="a";
var b="b";
console.log(a+b); //ab
若是字符和非字符相加,會自動將非字符隱式轉換爲字符 String()
例如
var a=6;
var b="a";
console.log(a+b); //6a,這裏將a隱式轉換爲字符串,而且相加首尾相連
非字符相加,按照隱式轉換爲數值,進行數值算術運算相加
var a=6;
var b=true;
console.log(a+b); //7
(2)- * / %
- * / % 都是隱式轉換爲數值運算 無論有沒有字符
例如
var a=6;
var b="a";
console.log(a-b);//減法會隱式轉換將a和b都轉換爲數值 6-NaN 獲得NaN。