JavaScript 的if語句和==的判斷
阿新 • • 發佈:2018-12-27
一. if(xx)的判斷
JavaScript 遇到預期為布林值的地方(比如if語句的條件部分),就會將非布林值的引數自動轉換為布林值。系統內部會自動呼叫Boolean函式。
1.當if括號裡面的表示式為Boolean時,直接判斷
if (true){ console.log("true"); //true } if (false){ console.log("true"); //false }
2.當if括號裡面的表示式為Number時,分兩種情況,當number為+0,-0,NaN的時候,為false;其他為true。
if(0){ console.log("true"); //false } if(NaN){ console.log("true"); //false } if(1){ console.log("true"); //true }
3.當if括號裡面的表示式為String時,空字串為false,其他為true;
if(""){ console.log("true"); //false } if("abc"){ console.log("true"); //true }
4.當if括號裡面的表示式為Undefined時,為false;
if(Undefined){ console.log("true"); //false }
5.當if括號裡面的表示式為null時,為false;
if(null){ console.log("true"); //false }
toBoolean
型別 | 結果 |
---|---|
undefined | false |
null | false |
Boolean | 直接判斷 |
string | ""(空字串)為false,其他為true |
Object | true |
Number | +0,-0,Nan為false,其他為true |
二. a==b的判斷
==是比較兩個值是否相等,相同型別直接比較,不同型別的話,看情況轉換。
- String==Number --->toNumber(String)==Number
"" = 0 ; //true,因為“”轉換為0 " " = 0 ; //true "hello" == 1 //false ,因為"hello"轉換為NaN "hello" == 0 //false,同理
- Boolean==(any) --->toNumber(Boolean)==(any)
1==true; //true,因為true轉換為1 0==false;//true ,因為false轉換為0 "0" == true //false "0" == false //true "00" == false //true "0.00" == false //true
- Object==String/Number---->toPrimitive(Object)
對於 Object 型別,先嚐試呼叫 .valueOf 方法獲取結果。 如果沒定義,再嘗試呼叫 .toString方法獲取結
果
{} == true // false [] == true //false var obj = { a: 0, valueOf: function(){return 1} } obj == "[object Object]" //false obj == 1 //true obj == true //true
- null==undefined,//true
- ==知識點
如果兩個值型別相同,則執行嚴格相等的運算
如果兩個值的型別不同
如果一個是null,一個是undefined,那麼相等
如果一個是數字,一個是字串,先將字串轉為數字,然後比較
如果一個值是true/false則將其轉為1/0比較
如果一個值是物件,一個是數字或字串,則嘗試使用valueOf和toString轉換後比較
其它就不相等了
toNumber
型別 | 結果 |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | ture->1,false->0 |
String | (""-->0, " "-->0 )空字串與空白字串轉換數值0,abc"->NaN,"123"->123 |