下面就來詳細說一說 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
Number(undefined) //返回NaN
Number(null) //返回0
Number("1.2") //返回1.2
Number("12") //返回12
Number("1.2.3") //返回NaN
Number(new Object()) //返回NaN
Number(123) //返回123
最後來分析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();//會報錯