if 判斷和 == 判斷

if(xx) 判斷

什么是 if(xx) 判斷?

所謂的 if(xx) 判斷,即是對括號中的 xx 或者說表達式通過布爾值判斷結(jié)果。當然也有不是布爾值的時候,這時就會將表達式強制轉(zhuǎn)換為布爾值之后進行判斷。

原理

類型 結(jié)果
Undefined false
Null false
Boolean 直接判斷
Number +0,-0或者 NaN 為 false,其他為 true
String 空字符串為 false,其他為 true
Object true

a==b 判斷

a==b 判斷的兩個規(guī)則

  • 如果兩個值類型相同,則執(zhí)行嚴格相等的運算;
  • 如果兩個值類型不同:
    (1)如果一個是 null,一個是 undefined,則二者相等;
    (2)如果一個是數(shù)字,一個是字符串,則將字符串轉(zhuǎn)換成數(shù)字后再比較;
    (3)如果一個值是 true/false,則將其轉(zhuǎn)換為1/0比較;
    (4)如果一個值是對象,一個是數(shù)字或字符串,則嘗試使用 .valueOf 和 .toString 轉(zhuǎn)換后比較;
    (5)其他的就都不相等了。

原理

x y 結(jié)果
Null Undefined true
Number String x == toNumber(y)
Boolean (any) toNumber(x) == y
Object String or Number toPrimitive(x) == y
otherwise otherwise false

toNumber

type result
Undefined NaN
Null 0
Boolean true -> 1,false -> 0
String "abc" -> NaN,"123" -> 123

toPrimitive

對于 Object 類型,先嘗試調(diào)用 .valueOf 方法獲取結(jié)果,如果沒有定義,再嘗試調(diào)用 .toString 方法獲取結(jié)果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,556評論 0 13
  • 初學js時,發(fā)現(xiàn)if()中判斷的結(jié)果和==的判斷結(jié)果竟然不太一樣誒,真的是非常地有貓病了。下面根據(jù)js的6中數(shù)據(jù)類...
    Coding破耳閱讀 416評論 0 0
  • 1.if判斷 在js中,if括號里的表達式,會被強制轉(zhuǎn)換為布爾類型 那么,什么情況下表達式會被判斷為真,什么情況下...
    yhldqt閱讀 359評論 0 0
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,513評論 0 21
  • 今天分享的書是《每天最重要的兩小時》本書中文版大約7萬字,我將分為三篇讀書筆記和大家分享這本書的精髓:如何成為高效...
    步履如菲閱讀 697評論 0 51

友情鏈接更多精彩內(nèi)容