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ā)布平臺,僅提供信息存儲服務。