您還可以使用強制類型轉(zhuǎn)換(type casting)來處理轉(zhuǎn)換值的類型。使用強制類型轉(zhuǎn)換可以訪問特定的值,即使它是另一種類型的。
編者注:cast 有“鑄造”之意,很貼合“強制轉(zhuǎn)換”的意思。
ECMAScript 中可用的 3 種強制類型轉(zhuǎn)換如下:
用這三個函數(shù)之一轉(zhuǎn)換值,將創(chuàng)建一個新值,存放由原始值直接轉(zhuǎn)換成的值。這會造成意想不到的后果。
當要轉(zhuǎn)換的值是至少有一個字符的字符串、非 0 數(shù)字或?qū)ο髸r,Boolean() 函數(shù)將返回 true。如果該值是空字符串、數(shù)字 0、undefined 或 null,它將返回 false。
可以用下面的代碼測試 Boolean 型的強制類型轉(zhuǎn)換:
var b1 = Boolean(""); //false - 空字符串 var b2 = Boolean("hello"); //true - 非空字符串 var b1 = Boolean(50); //true - 非零數(shù)字 var b1 = Boolean(null); //false - null var b1 = Boolean(0); //false - 零 var b1 = Boolean(new object()); //true - 對象
Number() 函數(shù)的強制類型轉(zhuǎn)換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉(zhuǎn)換的是整個值,而不是部分值。
還記得嗎,parseInt() 和 parseFloat() 方法只轉(zhuǎn)換第一個無效字符之前的字符串,因此 "1.2.3" 將分別被轉(zhuǎn)換為 "1" 和 "1.2"。
用 Number() 進行強制類型轉(zhuǎn)換,"1.2.3" 將返回 NaN,因為整個字符串值不能轉(zhuǎn)換成數(shù)字。如果字符串值能被完整地轉(zhuǎn)換,Number() 將判斷是調(diào)用 parseInt() 方法還是 parseFloat() 方法。
下表說明了對不同的值調(diào)用 Number() 方法會發(fā)生的情況:
用法 | 結(jié)果 |
---|---|
Number(false) | 0 |
Number(true) | 1 |
Number(undefined) | NaN |
Number(null) | 0 |
Number("1.2") | 1.2 |
Number("12") | 12 |
Number("1.2.3") | NaN |
Number(new object()) | NaN |
Number(50) | 50 |
最后一種強制類型轉(zhuǎn)換方法 String() 是最簡單的,因為它可把任何值轉(zhuǎn)換成字符串。
要執(zhí)行這種強制類型轉(zhuǎn)換,只需要調(diào)用作為參數(shù)傳遞進來的值的 toString() 方法,即把 12 轉(zhuǎn)換成 "12",把 true 轉(zhuǎn)換成 "true",把 false 轉(zhuǎn)換成 "false",以此類推。
強制轉(zhuǎn)換成字符串和調(diào)用 toString() 方法的唯一不同之處在于,對 null 和 undefined 值強制類型轉(zhuǎn)換可以生成字符串而不引發(fā)錯誤:
var s1 = String(null); //"null" var oNull = null; var s2 = oNull.toString(); //會引發(fā)錯誤
在處理 ECMAScript 這樣的弱類型語言時,強制類型轉(zhuǎn)換非常有用,不過應(yīng)該確保使用值的正確。
2015職稱計算機考試書PowerPoint2007中 .. 定價:¥45 優(yōu)惠價:¥42 更多書籍 | |
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |