下面就來詳細說一說 Javascript 中 Boolean、Nnumber、String 強制型別轉換的差別。
我們知道 Boolean(value) 是把值轉換成Boolean型,Nnumber(value) 是把值轉換成數字(整數或浮點數),而 String(value) 是把值轉換成字串。
先來分析下Boolean,Boolean在轉換值為「至少有一個字元的字串」、「非0的數字」或「物件」的情況下傳回true;轉換值為「空字串”、“數字0”、“undefined”,在“null”的情況下返回false。
例如:
var b1 = Boolean("" );//回傳false,空字串
var b2 = Boolean("s");//回傳true,非空字串
var b3 = Boolean(0);//回傳false,數字0
var b4 = Boolean(1);//回傳true,非0數字
var b5 = Boolean(-1);//回傳true,非0數字
var b6 = Boolean(null); //回傳false
var b7 = Boolean(undefined);//回傳false
var b8 = Boolean(new Object());//回傳true,物件
接下來分析Number,Number與parseInt和parseFloat類似,差別在於Number轉換的是整個值,而parseInt和parseFloat則可以只轉換開頭的數字部分。
例如:
Number(“1.2.3″),Number(“123abc”)會回傳NaN,而parseInt(“1.2.3″)回傳1、parseInt(“123abc”)傳回123、parseFloat( “1.2.3″)回傳1.2、ParseFloat(“123abc”)回傳123。
Number會先判斷要轉換的值能否被完整的轉換,然後再判斷是呼叫parseInt或parseFloat。
下面列了一些值呼叫Number後的結果:
Number(false) //回傳0
Number(true) //回傳1
最後來分析String,String可以把所有類型的資料轉換成字串,例如:String(false)的結果為」false”,String( 1)的結果為”1″。它和toString方法有些不同,差別如下:
複製程式碼
程式碼如下: var s1 = null; var s2 = String(t1);//s2的值是"null" var s3 = s1.toString();//會報錯var s4; var s5 = String(t4);//s5的值是"undefined" var s6 = t4.toString();//會報錯