Javascript中的類型轉換

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


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.字符轉換爲整數,以下,能夠採用ev al(String)的方法:
var a = "234" ;
a = a.replace(/(^[\\s]*)|([\\s]*$)/g, "");
if( a !="" && !isNaN( a ) )
{//若是是數字
a = ev al( a )
}
else
{//若是不是數字
a = null
}
javas cript有兩種數據類型的轉換方法:一種是將整個值從一種類型轉換爲另外一種數據類型(稱做基本數據類型轉換),另外一種方法是從一個值中提取另外一種類型的值,並完成轉換工做。

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

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.執行用字符串表示的一段javas cript代碼:ev al(); 例:zhang=ev al("1+1")的結果zhang=2

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



引文來源   Javascript中的類型轉換 - junmail - JavaEye技術網站
相關文章
相關標籤/搜索