js 數(shù)據(jù)類型轉(zhuǎn)換總結(jié)筆記
一,轉(zhuǎn)換成數(shù)字 xxx*1.0
轉(zhuǎn)換成字符串 xxx+""
二,從一個(gè)值中提取另一種類型的值,并完成轉(zhuǎn)換工作。
.提取字符串中的整數(shù):parseInt();
例:parseInt("123zhang")的結(jié)果為123
.提取字符串中的浮點(diǎn)數(shù):parseFloat();
例:parseFloat("0.55zhang")的結(jié)果為0.55
.執(zhí)行用字符串表示的一段javascript代碼:eval();
例:zhang=eval("1+1")的結(jié)果zhang=2
. 轉(zhuǎn)換成字符串: toString() ;
例:zhang=eval("1+1")的結(jié)果zhang=2
三,是將整個(gè)值從一種類型轉(zhuǎn)換為另一種數(shù)據(jù)類型(稱作基本數(shù)據(jù)類型轉(zhuǎn)換),
基本數(shù)據(jù)類型轉(zhuǎn)換的三種方法:
.轉(zhuǎn)換為字符型:String() ; 例:String(678)的結(jié)果為"678"
.轉(zhuǎn)換為數(shù)值型:Number() ; 例:Number("678")的結(jié)果為678
.轉(zhuǎn)換為布爾型:Boolean() ; 例:Boolean("aaa")的結(jié)果為true
使用這些方法時(shí),如有必要,盡量對(duì)參數(shù)和 方法的執(zhí)行進(jìn)行判斷和異常處理操作。
有在參考文檔中看到,如下關(guān)于執(zhí)行效率的總結(jié):
在IE 下,第一種速度最快,第二種次之,第三種最差,但差距不過(guò)10萬(wàn)次,差幾十百來(lái)毫秒而已。
在FF下,第一種和第二種基本上相當(dāng),第三種最慢。
速度差別基本上可以忽略。因?yàn)椴罹嗪苄 ?
但是,從代碼的簡(jiǎn)潔性, 第一種明顯寫(xiě)法簡(jiǎn)便,而且也易讀,
而且不會(huì)出現(xiàn)第二種的 因?yàn)?某個(gè)對(duì)象沒(méi)有 toString 方法而報(bào)錯(cuò)的問(wèn)題。況且他始終也是最快的。
所以,個(gè)人習(xí)慣使用第一種方式來(lái)完成數(shù)據(jù)類型的轉(zhuǎn)換
但是,比如需要“123456abcd”來(lái)提取其中的數(shù)字,那自然當(dāng)用parsetInt,和parseFloat之類的函數(shù)。
但是要注意,有時(shí)候 轉(zhuǎn)換的結(jié)果是 NaN 等,需要判斷一下。
例異常處理如 :
//執(zhí)行文本框內(nèi)的語(yǔ)句,用eval 返回語(yǔ)句執(zhí)行后的值
function doFunction(str) {
var result = str.replace(new RegExp("\"", "gm"), "");
//判斷語(yǔ)句是否合法
var reg = /\s*[A-Za-z]+\s*\('.+'\)\s*$/;
if (result.match(reg)) // 或者用 reg.test(result); 方法判斷
try {
result = eval(result);
return result;
}
catch (Error) {
alert("抱歉!語(yǔ)句無(wú)法執(zhí)行轉(zhuǎn)化。注意語(yǔ)法和拼寫(xiě)。");
return;
}
else alert("請(qǐng)檢查數(shù)據(jù)類型轉(zhuǎn)換語(yǔ)句的格式及語(yǔ)法!");
}
有關(guān)數(shù)據(jù)轉(zhuǎn)換方法的其他測(cè)試示例如下:
| 例 句 | 結(jié) 果 |
|---|---|
| parseInt('1234') | 1234 |
| parseInt('1234.00') | 1234 |
| parseInt('1234abc') | 1234 |
| parseInt('abc1234') | undefined(轉(zhuǎn)換失敗) |
| parseFloat('1234.123') | 1234.123 |
| parseFloat('1234.123a') | 1234.123 |
| parseFloat('a1234.123') | NaN |
| Number('1234.123') | 1234.123 |
| Number('1234.123aa') | NaN |
| String(eval('12+10')) | 22 |
| Boolean('0'),Boolean('567'),Boolean(567) | true |
| Boolean(null),Boolean(false),Boolean(0),Boolean(''),Boolean() | false |
| this.toString() | [object] |
| (typeof(this)).toString() | object |
| eval('12+34') | 46 |
| eval('12+34')+'' | 46 |
| eval('12+34')*1.0 | 46 |
| typeof(eval('12+34')*1.0) | number |
| typeof(eval('12+34')+'') | string |
注:測(cè)試時(shí)的環(huán)境是 vs2008,ie8...,是在頁(yè)面上輸入的語(yǔ)句,js里用eval處理上表中左欄的轉(zhuǎn)換例句。
使用時(shí)或許需要修改符號(hào)等。
- JavaScript中的數(shù)據(jù)類型轉(zhuǎn)換方法小結(jié)
- JavaScript實(shí)現(xiàn)數(shù)據(jù)類型的相互轉(zhuǎn)換
- 詳解Javascript數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則
- JavaScript中數(shù)據(jù)類型轉(zhuǎn)換總結(jié)
- javascript基本數(shù)據(jù)類型和轉(zhuǎn)換
- JavaScript的數(shù)據(jù)類型轉(zhuǎn)換原則(干貨)
- JavaScript數(shù)據(jù)類型轉(zhuǎn)換詳解(推薦)
- JavaScript數(shù)據(jù)類型轉(zhuǎn)換簡(jiǎn)單方法舉例
相關(guān)文章
js實(shí)現(xiàn)3D圖片逐張輪播幻燈片特效代碼分享
這篇文章主要介紹了js實(shí)現(xiàn)3D圖片逐張輪播幻燈片特效,圖片輪播效果特別適合做產(chǎn)品展示,具有很強(qiáng)的立體效果,感興趣的小伙伴可以參考下。2015-09-09
利用CSS、JavaScript及Ajax實(shí)現(xiàn)圖片預(yù)加載的三大方法
本文主要介紹了利用CSS、JavaScript及Ajax實(shí)現(xiàn)圖片預(yù)加載的三大方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
bootstrapValidator自定驗(yàn)證方法寫(xiě)法
這篇文章主要為大家詳細(xì)介紹了bootstrapValidator自定驗(yàn)證方法寫(xiě)法,研究bootstrapValidator驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
JS+CSS實(shí)現(xiàn)滾動(dòng)數(shù)字時(shí)鐘效果
本篇文章教給大家用JS代碼配合CSS樣式來(lái)實(shí)現(xiàn)滾動(dòng)時(shí)鐘的動(dòng)畫(huà)效果,一起來(lái)學(xué)習(xí)下。2017-12-12
js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付寶APP打開(kāi)口令領(lǐng)紅包功能
最近支付寶的領(lǐng)紅包可真是刷爆了各個(gè)微信群啊,滿群都是支付寶口令,可是這樣推廣很麻煩,下面小編給大家?guī)?lái)了js實(shí)現(xiàn)微信/QQ直接跳轉(zhuǎn)到支付寶APP打開(kāi)口令領(lǐng)紅包功能,需要的朋友參考下2018-01-01
WebSocket中心跳檢測(cè)與斷開(kāi)重連機(jī)制詳解
心跳檢測(cè)是指在WebSocket連接過(guò)程中定時(shí)向服務(wù)端發(fā)送和接收心跳消息,來(lái)確定當(dāng)前連接是否是正常狀態(tài)的檢測(cè)機(jī)制,斷開(kāi)重連是指在WebSocket不正常斷開(kāi)連接后,進(jìn)行重新連接的策略,下面我們就來(lái)看看這二者的具體實(shí)現(xiàn)吧2024-01-01

