string和number boolean
javascript 類型會根據賦值的進行轉成相應的類型。
var str = ""; alert(typeof (str));//string str = ; alert(typeof (str));//number var sum = str + ; //+編程兩個數字相加 alert(sum);//
這一種比較明顯,一眼就可以計算出其值。但是請看下面這種轉換
var sum = "" + ""; alert(typeof (sum)); //string alert(sum);// var sum = "" + ; alert(typeof (sum)); //string alert(sum);// var sum = + ""; alert(typeof (sum));//string alert(sum); var area = "" * ""; alert(typeof (area)); //number alert(area);// var sub = "" - ""; alert(typeof (sub)); //number alert(sub);// var div = "" / ""; alert(typeof (div));//number alert(div);//.
number 類型如果和string 類型"+", 將會直接number轉成string
上述中“+” 比較特殊,如果是- 、* 、/ 呢;那麼最終會轉成什麼類型呢。
var area = "" * "a"; alert(typeof (area));//number alert(area);//NaN var sub = "a" - ""; alert(typeof (sub));//number alert(sub);//NaN sub = "a" - ; alert(typeof (sub));//number alert(sub);//NaN var div = "" / "a"; alert(typeof (div));//number alert(div);//NaN div = "a" / ; alert(typeof (div));//number alert(div);//NaN
如上 - 、*、/ 是number 中算術具有的。string和number是不能進行運算的,所以其值都是NaN。類型number。
var a = true; alert(typeof(a));//boolean var b = "true"; var ab = a + b; alert(typeof (ab));//string alert(ab); //truetrue alert(a == b);//false
boolean 和 string ,boolean類型自動轉成了字符串“true”,但是為什麼a不等於b呢
大家看下這個例子:
var c = ""; alert(typeof(c));//string var d = ; alert(typeof (d));//number alert(c == d);//true
這裡給出了轉換的原則:(供參考)
1. 如果有一個操作數是布爾值,則在比較相等之前將其轉換為數值————false轉換為0,true轉換為1;
2. 如果一個操作數是字符串,另一個操作符是數值,則在比較相等之前先講字符串轉換為數值;
3. 如果一個操作數是對象,另一個操作數不是,則調用對象的valueOf()方法,用得到的基本類型值按照前面的規則進行比較。
那麼在比較字符串和布爾類型是就會:
發生這樣的轉換: Boolean true先轉成number 1,在轉成字符串“1” ,在進行比較。結果肯定是 false 了。
null 和string number Boolean undefined
var a = null; alert(typeof (a));//object var b = "hello"; var ab = a + b; alert(typeof (ab));//string alert(ab); //nullhello var c = ; var ac = a * c; alert(typeof (ac)); //number alert(ac);// if (a ) //false { } else { alert("false"); } var u; alert(a == u); //true
從給出的例子可以看出:
null 在 string中 自動轉成字符串"null" , 在number中表示數字 0,在邏輯判斷中相當於false,在值表示時 和undefined 一樣。注意是== 而不是===。
雖然javascript 在進行比較時,== 轉換了其比較類型,但是其變量類型並沒有因為== 而發生改變。