js 數據類型轉換總結筆記
更新時間:2011年01月17日 22:39:59 作者:
js 數據類型轉換總結筆記,需要的朋友可以參考下。
javascript有如下數據類型的轉換方法:
一,轉換成數字 xxx*1.0
轉換成字符串 xxx+""
二,從一個值中提取另一種類型的值,并完成轉換工作。
.提取字符串中的整數:parseInt();
例:parseInt("123zhang")的結果為123
.提取字符串中的浮點數:parseFloat();
例:parseFloat("0.55zhang")的結果為0.55
.執(zhí)行用字符串表示的一段javascript代碼:eval();
例:zhang=eval("1+1")的結果zhang=2
. 轉換成字符串: toString() ;
例:zhang=eval("1+1")的結果zhang=2
三,是將整個值從一種類型轉換為另一種數據類型(稱作基本數據類型轉換),
基本數據類型轉換的三種方法:
.轉換為字符型:String() ; 例:String(678)的結果為"678"
.轉換為數值型:Number() ; 例:Number("678")的結果為678
.轉換為布爾型:Boolean() ; 例:Boolean("aaa")的結果為true
使用這些方法時,如有必要,盡量對參數和 方法的執(zhí)行進行判斷和異常處理操作。
有在參考文檔中看到,如下關于執(zhí)行效率的總結:
在IE 下,第一種速度最快,第二種次之,第三種最差,但差距不過10萬次,差幾十百來毫秒而已。
在FF下,第一種和第二種基本上相當,第三種最慢。
速度差別基本上可以忽略。因為差距很小。
但是,從代碼的簡潔性, 第一種明顯寫法簡便,而且也易讀,
而且不會出現第二種的 因為 某個對象沒有 toString 方法而報錯的問題。況且他始終也是最快的。
所以,個人習慣使用第一種方式來完成數據類型的轉換
但是,比如需要“123456abcd”來提取其中的數字,那自然當用parsetInt,和parseFloat之類的函數。
但是要注意,有時候 轉換的結果是 NaN 等,需要判斷一下。
例異常處理如 :
//執(zhí)行文本框內的語句,用eval 返回語句執(zhí)行后的值
function doFunction(str) {
var result = str.replace(new RegExp("\"", "gm"), "");
//判斷語句是否合法
var reg = /\s*[A-Za-z]+\s*\('.+'\)\s*$/;
if (result.match(reg)) // 或者用 reg.test(result); 方法判斷
try {
result = eval(result);
return result;
}
catch (Error) {
alert("抱歉!語句無法執(zhí)行轉化。注意語法和拼寫。");
return;
}
else alert("請檢查數據類型轉換語句的格式及語法!");
}
有關數據轉換方法的其他測試示例如下:
一,轉換成數字 xxx*1.0
轉換成字符串 xxx+""
二,從一個值中提取另一種類型的值,并完成轉換工作。
.提取字符串中的整數:parseInt();
例:parseInt("123zhang")的結果為123
.提取字符串中的浮點數:parseFloat();
例:parseFloat("0.55zhang")的結果為0.55
.執(zhí)行用字符串表示的一段javascript代碼:eval();
例:zhang=eval("1+1")的結果zhang=2
. 轉換成字符串: toString() ;
例:zhang=eval("1+1")的結果zhang=2
三,是將整個值從一種類型轉換為另一種數據類型(稱作基本數據類型轉換),
基本數據類型轉換的三種方法:
.轉換為字符型:String() ; 例:String(678)的結果為"678"
.轉換為數值型:Number() ; 例:Number("678")的結果為678
.轉換為布爾型:Boolean() ; 例:Boolean("aaa")的結果為true
使用這些方法時,如有必要,盡量對參數和 方法的執(zhí)行進行判斷和異常處理操作。
有在參考文檔中看到,如下關于執(zhí)行效率的總結:
在IE 下,第一種速度最快,第二種次之,第三種最差,但差距不過10萬次,差幾十百來毫秒而已。
在FF下,第一種和第二種基本上相當,第三種最慢。
速度差別基本上可以忽略。因為差距很小。
但是,從代碼的簡潔性, 第一種明顯寫法簡便,而且也易讀,
而且不會出現第二種的 因為 某個對象沒有 toString 方法而報錯的問題。況且他始終也是最快的。
所以,個人習慣使用第一種方式來完成數據類型的轉換
但是,比如需要“123456abcd”來提取其中的數字,那自然當用parsetInt,和parseFloat之類的函數。
但是要注意,有時候 轉換的結果是 NaN 等,需要判斷一下。
例異常處理如 :
復制代碼 代碼如下:
//執(zhí)行文本框內的語句,用eval 返回語句執(zhí)行后的值
function doFunction(str) {
var result = str.replace(new RegExp("\"", "gm"), "");
//判斷語句是否合法
var reg = /\s*[A-Za-z]+\s*\('.+'\)\s*$/;
if (result.match(reg)) // 或者用 reg.test(result); 方法判斷
try {
result = eval(result);
return result;
}
catch (Error) {
alert("抱歉!語句無法執(zhí)行轉化。注意語法和拼寫。");
return;
}
else alert("請檢查數據類型轉換語句的格式及語法!");
}
有關數據轉換方法的其他測試示例如下:
例 句 | 結 果 |
---|---|
parseInt('1234') | 1234 |
parseInt('1234.00') | 1234 |
parseInt('1234abc') | 1234 |
parseInt('abc1234') | undefined(轉換失敗) |
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 |
注:測試時的環(huán)境是 vs2008,ie8...,是在頁面上輸入的語句,js里用eval處理上表中左欄的轉換例句。
使用時或許需要修改符號等。
相關文章
web開發(fā)js字符串拼接占位符及conlose對象Api詳解
本篇文章主要為大家介紹了web開發(fā)中字符串的拼接,占位符的使用以及conlose對象Api的使用,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09baidu博客的編輯友情鏈接的新的層窗口!經典~支持【FF】
baidu博客的編輯友情鏈接的新的層窗口!經典~支持【FF】...2007-02-02