JavaScript
由于JavaScript是弱類(lèi)型語(yǔ)言瘩欺,故其有強(qiáng)類(lèi)型語(yǔ)言沒(méi)有的隱式轉(zhuǎn)換必盖。除此之外,還可通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換和轉(zhuǎn)換函數(shù)處理轉(zhuǎn)換值得類(lèi)型俱饿。
1.隱式類(lèi)型轉(zhuǎn)換
所謂隱式類(lèi)型轉(zhuǎn)換歌粥,即不同類(lèi)型的數(shù)據(jù)在做運(yùn)算時(shí)可以進(jìn)行默認(rèn)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換。
隱式轉(zhuǎn)換法則
- 1.1 字符串 + 數(shù)字/布爾值/null/undefined : 非字符串轉(zhuǎn)換為字符串拍埠;
- 1.2 undefined + 非字符串(null/數(shù)字/布爾值/undefined) : NaN失驶;
- 1.3 null + 數(shù)字/布爾值 : null 轉(zhuǎn)換為0,true轉(zhuǎn)換為1枣购,false轉(zhuǎn)換為0嬉探;
- 1.4 布爾值 + 布爾值 : 布爾值轉(zhuǎn)換為數(shù)字。
優(yōu)先級(jí)排序 :字符串 > undefined > null >= 數(shù)字
2.強(qiáng)制類(lèi)型轉(zhuǎn)換
一共有三種強(qiáng)制類(lèi)型的轉(zhuǎn)換:Boolean(value)棉圈;Number(value);String(value)涩堤。用這三個(gè)函數(shù)轉(zhuǎn)換值,將創(chuàng)建一個(gè)新值分瘾,存放原始值轉(zhuǎn)換后的值
2.1 Boolean()——將給定的值轉(zhuǎn)換成布爾型
- 當(dāng)要轉(zhuǎn)換的值是 ==空字符串== / ==數(shù)字0== / ==undefined== / ==null== 四種情況之一時(shí)胎围,返回false;否則返回true德召。
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();
Boolean(0); //false
Boolean(""); //false
Boolean(undefined); //false
Boolean(aaa); //false
Boolean(null); //false
Boolean(bbb); //false
Boolean(ccc); //true ccc是值為"null"的字符串
console.log(ddd) //{}
Boolean(ddd); //true
2.2 Number()——將給定值轉(zhuǎn)換為數(shù)字
- 布爾值true被轉(zhuǎn)換為1
- 布爾值false和null被轉(zhuǎn)換為0
- undefined和無(wú)法被轉(zhuǎn)換為數(shù)字的字符串(如"4.3.2"/"abc")被轉(zhuǎn)換為NaN
var aaa;
var bbb = null;
var ccc = "null";
var ddd = new Object();
Number(true); //1
Number(false); //0
Number(aaa); //NaN
Number(undefined); //NaN
Number(bbb); //0
Number(null); //0
Number("2.1.0"); //NaN
Number("abc"); //NaN
Number("2.1abc"); //NaN
Number("2.1"); //2.1
2.3 String()——將給定值轉(zhuǎn)換為字符串
- 此方法最簡(jiǎn)單白魂,它可將任何值轉(zhuǎn)換為字符串
var ddd = new Object();
String(false); //"false"
String(null); //"null"
String(undefined); //"undefined"
String(ddd); //"[object Object]"
3.轉(zhuǎn)換函數(shù)
3.1 toString()
- 轉(zhuǎn)換為字符串,類(lèi)似于String(),但undefined和null的轉(zhuǎn)換報(bào)錯(cuò)
var ddd = new Object();
toString(false); //"false"
toString(null); //"null"
toString(undefined); //"[object Undefined]"
toString(null); //"[object Undefined]"
toString(ddd); //"[object Undefined]"
3.2 parseInt()
parseInt("aaa"); //NaN
parseInt("123"); //123
parseInt("12aaa"); //12
parseInt("aaa12"); //NaN
parseInt("123aaa12"); //123
parseInt(null); //NaN
parseInt(undefined); //NaN
3.3 parseFloat()
parseFloat("1.23sdf"); //1.23
parseFloat("sdf1.23"); //NaN
parseFloat("2.33sdf1.23"); //2.33
parseFloat(null); //NaN
parseFloat(undefined); //NaN