华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場 | 考試論壇  
  當前位置:設(shè)計制作 > JavaScript > 文章內(nèi)容
  

JavaScript數(shù)據(jù)類型:強制類型轉(zhuǎn)換

 [ 2016年6月17日 ] 【

強制類型轉(zhuǎn)換

您還可以使用強制類型轉(zhuǎn)換(type casting)來處理轉(zhuǎn)換值的類型。使用強制類型轉(zhuǎn)換可以訪問特定的值,即使它是另一種類型的。

編者注:cast 有“鑄造”之意,很貼合“強制轉(zhuǎn)換”的意思。

ECMAScript 中可用的 3 種強制類型轉(zhuǎn)換如下:

  • Boolean(value) - 把給定的值轉(zhuǎn)換成 Boolean 型;
  • Number(value) - 把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù));
  • String(value) - 把給定的值轉(zhuǎn)換成字符串;

用這三個函數(shù)之一轉(zhuǎn)換值,將創(chuàng)建一個新值,存放由原始值直接轉(zhuǎn)換成的值。這會造成意想不到的后果。

Boolean() 函數(shù)

當要轉(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ù)

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

String() 函數(shù)

最后一種強制類型轉(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)該確保使用值的正確。

本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
介休市| 建阳市| 建平县| 大同县| 镶黄旗| 卢龙县| 平和县| 兴城市| 宝坻区| 茂名市| 呈贡县| 柳江县| 射阳县| 财经| 苍山县| 垣曲县| 黎平县| 马公市| 平果县| 金塔县| 清水河县| 深圳市| 湄潭县| 南木林县| 唐海县| 交口县| 建宁县| 衡阳市| 苍梧县| 慈利县| 金川县| 花垣县| 德化县| 威宁| 洪江市| 阿巴嘎旗| 绿春县| 清河县| 金山区| 随州市| 南充市|