[js中的類型轉(zhuǎn)換]
先介紹一下 typeof 的使用方法:
typeof(mix) 或者 typeof mix
其中 mix 可以是任何數(shù)據(jù)類型
js有六種數(shù)據(jù)類型:
五種簡(jiǎn)單數(shù)據(jù)類型喜每,又叫基本數(shù)據(jù)類型鸠匀,分別為:Number,String,Boolean,Null,Undefined;
一種基本數(shù)據(jù)類型:Object
typeof 的返回值有六種:
number、string、boolean衣撬、object、 function和underfined
注意:返回值是一個(gè)字符串類型
特別的:
- typeof(null)==="object";//true
- typeof(NaN)==="number";//true
類型轉(zhuǎn)換:
一肛根、顯示類型轉(zhuǎn)換
**Number(mix) ** :把mix轉(zhuǎn)化成數(shù)字類型 可以轉(zhuǎn)為數(shù)字的就轉(zhuǎn)化為相應(yīng)的數(shù)字用爪,不能轉(zhuǎn)化的就轉(zhuǎn)為NaN 其中:
Number(true) //1;Number(false)//0分冈;Number(null) //0似忧;Number(undefined) //NaN-
parseInt(mix,radix) :把mix轉(zhuǎn)化成整數(shù) 除了數(shù)字和能轉(zhuǎn)化為數(shù)字的字符串,其他都轉(zhuǎn)化為NaN丈秩,當(dāng)mix為字符串時(shí)盯捌,則從第一位一直到非數(shù)字截止,即該方法可以截?cái)? radix是將mix看成radix進(jìn)制 來進(jìn)行轉(zhuǎn)化 若有小數(shù)部分則是直接去掉
注意:parseInt(true) //NaN蘑秽; parseInt(false) //NaN饺著;在把字符串轉(zhuǎn)化為數(shù)字時(shí),parseInt()可以截?cái)喑ι玁umber()不能 =》 parseInt("123qqq")//123幼衰;Number("123qqq")//NaN
parseFloat(number) :轉(zhuǎn)化成 浮點(diǎn)類型 從一位開始看,到除了第一個(gè)點(diǎn)以外的非數(shù)字位截止
Boolean(mix) : 轉(zhuǎn)化為boolean類型
String(mix) :轉(zhuǎn)化為字符串類型
mix.toString(radix) 與String(mix)用法不同 且undefined和null不能使用 mix.toString(); radix是目標(biāo)值的進(jìn)制 將mix轉(zhuǎn)化成radix進(jìn)制缀雳。
注:如將二進(jìn)制10100轉(zhuǎn)化為16進(jìn)制
過程是 先parseInt()轉(zhuǎn)化為10進(jìn)制 然后在toString()轉(zhuǎn)化為16進(jìn)制
var num=10100;
var test=parseInt(num,2);
num.toString(16);
2渡嚣、隱式類型轉(zhuǎn)化(內(nèi)部隱式的調(diào)用的都是顯示類型的方法)
isNaN():內(nèi)部隱式調(diào)用Number()進(jìn)行類型轉(zhuǎn)化,再判斷Number()返回的值是否是NaN肥印。如:isNaN(null)//false isNaN(underfined)//true
++(加加) --(減減) +(正) - (負(fù)):內(nèi)部隱式調(diào)用Number()轉(zhuǎn)化后再進(jìn)行相應(yīng)計(jì)算
+(加號(hào)) 當(dāng)加號(hào)兩邊有一個(gè)是字符串的話识椰,就會(huì)調(diào)用String,然后進(jìn)行字符串的拼接
**- * / % ** 內(nèi)部隱式調(diào)用Number()進(jìn)行類型后再計(jì)算
**<(小于) >(大于) <=(小于等于) >=(大于等于) ** 字符串和數(shù)字比 會(huì)調(diào)用Number 轉(zhuǎn)化為數(shù)字
**== != **1==‘1’//true undefined==null 1>2<3;//true NaN==NaN;//false NaN不等于任何東西 包括本身
-
**&&(與) ||(或) I罴睢(非) ** && || 雖然有轉(zhuǎn)化 但返回的依然是原值
&&:先看第一個(gè)表達(dá)式轉(zhuǎn)化成布爾值的值腹鹉,如果為真,那么看第二個(gè)表達(dá)式轉(zhuǎn)化為布爾值的值敷硅,功咒。。绞蹦。力奋。依次進(jìn)行,直到碰到假幽七;如果只有兩個(gè)表達(dá)式景殷,則會(huì)在第一個(gè)表達(dá)式轉(zhuǎn)化為布爾值為真時(shí),直接返回第二個(gè)表達(dá)式的值;否則返回第一個(gè)表達(dá)式的值進(jìn)行賦值
var a = 1 && 2+2;//4
var b = 0 && 2+2;//0
||:與&&類似滨彻,但先看第一個(gè)表達(dá)式轉(zhuǎn)化為布爾值后的值藕届,如果為真,直接返回第一個(gè)表達(dá)式的值亭饵,如果為假休偶,則接著往下進(jìn)行判斷
判斷真假只是決定是否接著“往下走”,但返回的仍是其本身的值辜羊,而不是轉(zhuǎn)化的布爾值
注: 使用未聲明的變量只有一種情況 不報(bào)錯(cuò) 就是 typeof(a);//undefined
因?yàn)?typeof 返回的是一個(gè)字符串 typeof(typeof(a));//String