1. 程式人生 > >JavaScript 的if語句和==的判斷

JavaScript 的if語句和==的判斷

一. 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的判斷

==是比較兩個值是否相等,相同型別直接比較,不同型別的話,看情況轉換。

  1. String==Number --->toNumber(String)==Number
"" = 0 ; //true,因為“”轉換為0
"  " = 0 ; //true
"hello" == 1  //false  ,因為"hello"轉換為NaN
"hello" == 0 //false,同理

 

  1. 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
  1. 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
  1. 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