1. 程式人生 > >JS型別轉化

JS型別轉化

轉為string

toString

 轉為int

parseInt(string, radix)


盡力匹配int,可以是各種進位制,
其他錯誤表示式儘量匹配最長。和輸入差不多。貪婪模式。

當引數 radix 的值為 0,或沒有設定該引數時,parseInt() 會根據 string 來判斷數字的基數。

舉例,如果 string 以 "0x" 開頭,parseInt() 會把 string 的其餘部分解析為十六進位制的整數。如果 
string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字元解析為八進位制或十六進
制的數字。如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析為十進位制的整數。

只有字串中的第一個數字會被返回。

var iNum1 = parseInt("12345red");	//返回 12345
var iNum1 = parseInt("0xA");	//返回 10
var iNum1 = parseInt("56.9");	//返回 56
var iNum1 = parseInt("red");	//返回 NaN

var iNum1 = parseInt("AF", 16);	//返回 175

 轉為float  parseFloat()

parseFloat(string)
方法與 parseInt() 方法的處理方式相似,從位置 0 開始檢視每個字元,直到找到第一個非有
效的字元為止,然後把該字元之前的字串轉換成整數。

不過,對於這個方法來說,第一個出現的小數點是有效字元。如果有兩個小數點,第二個小數點將被看作無效的。
parseFloat() 會把這個小數點之前的字元轉換成數字。這意味著字串 "11.22.33" 將被解析成 11.22。

使用 parseFloat() 方法的另一不同之處在於,字串必須以十進位制形式表示浮點數,而不是用八進位制或十六進
制。該方法會忽略前導 0,所以八進位制數 0102 將被解析為 102。對於十六進位制數 0xA,該方法將返回 NaN,因
為在浮點數中,x 不是有效字元。(註釋:經測試,具體的瀏覽器實現會返回 0,而不是 NaN。)

此外,parseFloat() 方法也沒有基模式。


盡力匹配float的regex。
var fNum1 = parseFloat("12345red");	//返回 12345
var fNum2 = parseFloat("0xA");	//返回 NaN
var fNum3 = parseFloat("11.2");	//返回 11.2
var fNum4 = parseFloat("11.22.33");	//返回 11.22
var fNum5 = parseFloat("0102");	//返回 102
var fNum1 = parseFloat("red");	//返回 NaN

強轉,可能會有型別錯誤。

Boolean(value) - 把給定的值轉換成 Boolean 型;
Number(value) - 把給定的值轉換成數字(可以是整數或浮點數);
String(value) - 把給定的值轉換成字串;

 

Boolean() 函式
當要轉換的值是至少有一個字元的字串、非 0 數字或物件時,Boolean() 函式將返回 true。如果該值是空字串、數字 0、undefined 或 null,它將返回 false。

可以用下面的程式碼測試 Boolean 型的強制型別轉換:

var b1 = Boolean("");		//false - 空字串
var b2 = Boolean("hello");		//true - 非空字串
var b1 = Boolean(50);		//true - 非零數字
var b1 = Boolean(null);		//false - null
var b1 = Boolean(0);		//false - 零
var b1 = Boolean(new object());	//true - 物件
Number() 函式
Number() 函式的強制型別轉換與 parseInt() 和 parseFloat() 方法的處理方式相似,只是它轉換的是整個值,而不是部分值。

還記得嗎,parseInt() 和 parseFloat() 方法只轉換第一個無效字元之前的字串,因此 "1.2.3" 將分別被轉換為 "1" 和 "1.2"。

用 Number() 進行強制型別轉換,"1.2.3" 將返回 NaN,因為整個字串值不能轉換成數字。如果字串值能被完整地轉換,Number() 將判斷是呼叫 parseInt() 方法還是 parseFloat() 方法。

下表說明了對不同的值呼叫 Number() 方法會發生的情況:

用法	結果
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() 函式
最後一種強制型別轉換方法 String() 是最簡單的,因為它可把任何值轉換成字串。

要執行這種強制型別轉換,只需要呼叫作為引數傳遞進來的值的 toString() 方法,即把 12 轉換成 "12",把 true 轉換成 "true",把 false 轉換成 "false",以此類推。

強制轉換成字串和呼叫 toString() 方法的唯一不同之處在於,對 null 和 undefined 值強制型別轉換可以生成字串而不引發錯誤:

var s1 = String(null);	//"null"
var oNull = null;
var s2 = oNull.toString();	//會引發錯誤
在處理 ECMAScript 這樣的弱型別語言時,強制型別轉換非常有用,不過應該確保使用值的正確。