js函式中的if判斷和a==b判斷

deeply發表於2021-09-09

if判斷

if(xxx){
}
  • 括號內的表示式,會被強制轉換為布林型別

原理

型別 結果
Undefined false
Null false
Boolean 直接判斷
Number +0, −0, 或者 NaN 為 false, 其他為 true
String 空字串為 false,其他都為 true
Object true

a==b的判斷的規則如下:

1、如果兩個值型別相同,進行 === 比較。
2、如果兩個值型別不同,他們可能相等。根據下面規則進行型別轉換再比較:
a、如果一個是null、一個是undefined,那麼[相等]。
b、如果一個是字串,一個是數值,把字串轉換成數值再進行比較。
c、如果任一值是 true,把它轉換成 1 再比較;如果任一值是 false,把它轉換成 0 再比較。
d、如果一個是物件,另一個是數值或字串,把物件轉換成基礎型別的值再比較。物件轉換成基礎型別,利用它的toString或者valueOf方法。
e、任何其他組合,都[不相等]。

  • 表格如下:

x y 結果
null undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
Object String or Number toPrimitive(x) == y
otherwise otherwise false

toNumber的轉換

型別 結果
Undefined NaN
Null 0
Boolean ture -> 1, false -> 0
String “abc” -> NaN, “123” -> 123
  • 對於 Object 型別,先嚐試呼叫 .valueOf 方法獲取結果。 如果沒定義,再嘗試呼叫 .toString方法獲取結果



作者:徐金俊
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2814311/,如需轉載,請註明出處,否則將追究法律責任。

相關文章