javascript數據類型轉換

首先我們可以看C中間的強制類型轉換,只能存在整數可表示類型和浮點數類型之間,比如(int)2.45,這是可以的,但是他們和字符串之間都沒有強制轉換的可能,因爲字符串實際是一個指針。因此不可能出現(char *)2.45就可以獲得"2.45"這個字符串的情況,反之也不能。
        而在C++中,我們可以創建一個類,並且重載強制轉換操作,來完成這種情況,那麼就必須要求有相應的對象,但是對於基本類型,這也是不可以的。
        然後,因爲JavaScript在對象模型上主要參考了Java,我們可以再參考一下Java的類型轉換:
在Java中,基本類型之間的強制轉換也不是這樣的,比如,整數要轉換成字符串,必須使用Integer.toString()靜態方法或者String.valueOf()靜態方法,把字符串轉換爲整數,必須使用Integer.valueOf()。
可見,不能把JavaScript中的類型轉換看作爲“強制類型轉換”。
在JavaScript中,Double類型和Int類型都是看作爲Number對象,因此無論是typeof 1還是typeof 1.0,都是返回number。這樣我們可以不用去管是Int還是Double類型,讓JavaScript解釋引擎內部去處理。


1. 如果要把Number轉換成String,可以使用Number的toString()方法,(象(1).toString()括號必須或者 1 .toString()空格必須,否則會編譯出錯,如果是變量則無需),或者調用String()函數,這兩種方法都會自動調用解釋引擎內部的 NumberToString(),或者根據進制調用其它函數,基本類似。
2.如果要把String轉換成Number,可以使用Number ()函數,他會自動判斷String中是整數還是浮點數,然後內部使用相應的數據類型,另外可以使用全局函數parseInt()和parseFloat (),他們根據你的要求進行轉換。同樣的,他們在解釋引擎內部機制上是使用了 StringToNumber,StringToInt等等內部的函數。
3.而如果是Double轉換成Int,必須使用Math.floor()函數(截尾取整)或者Math.round()(四捨五入)
4.Int轉換成Double,無須考慮任何問題,直接把Int當成Double進行運算
5.字符轉換爲整數,如下,可以採用eval(String)的方法:
var a = "234" ;
a = a.replace(/(^[\\s]*)|([\\s]*$)/g, "");
if( a !="" && !isNaN( a ) )
{//如果是數字
a = eval( a )
}
else
{//如果不是數字
a = null
}
javascript有兩種數據類型的轉換方法:一種是將整個值從一種類型轉換爲另一種數據類型(稱作基本數據類型轉換),另一種方法是從一個值中提取另一種類型的值,並完成轉換工作。

基本數據類型轉換的三種方法:

1.轉換爲字符型:String(); 例:String(678)的結果爲"678"
2.轉換爲數值型:Number(); 例:Number("678")的結果爲678
3.轉換爲布爾型:Boolean(); 例:Boolean("aaa")的結果爲true

從一個值中提取另一種類型的值的方法:

1.提取字符串中的整數:parseInt(); 例:parseInt("123zhang")的結果爲123
2.提取字符串中的浮點數:parseFloat(); 例:parseFloat("0.55zhang")的結果爲0.55
3.執行用字符串表示的一段javascript代碼:eval(); 例:zhang=eval("1+1")的結果zhang=2

注:Number、String函數是特殊的函數,在JS引擎中,他會自動判斷是作爲構造函數調用還是普通調用,所以既可以使用new關鍵字,也可以作爲函數直接調用。
關於JS的參考手冊,微軟有一個CHM十分不錯,指南、API參考都有,是Windows腳本技術,中文版,我在MSDN上下載的。而關於JS解釋引擎的,我參考的是Netscape的Spidermonkey,現在由Mozilla組織維護。

發佈了40 篇原創文章 · 獲贊 0 · 訪問量 1635
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章