1.if判斷
if(xxx){
}
在js中僵闯,if括號里的表達式翔横,會被強制轉換為布爾類型
// 例1:如下代碼輸出什么?
if ("hello") {
console.log("hello")
}
// 答案:判斷為true缅刽,輸出hello
// 例2:如下代碼輸出什么?
if ("") {
console.log('empty')
}
// 答案:判斷為false啊掏,無輸出
// 例3:如下代碼輸出什么?
if (" ") {
console.log('blank')
}
// 答案:判斷為true,輸出blank
// 例4:如下代碼輸出什么?
if ([0]) {
console.log('array')
}
// 答案:判斷為true衰猛,輸出array
// 例5:如下代碼輸出什么?
if(0.00){
console.log('0.00')
}
// 答案:判斷為false迟蜜,無輸出
那么,什么情況下表達式會被判斷為真啡省,什么情況下表達式會被判斷為假呢娜睛?
總結:
類型 | 結果 |
---|---|
Undefined | false |
Null | false |
Boolean | 直接判斷 |
Number | +0, ?0, 或者 NaN 為 false, 其他為 true |
String | 空字符串為 false,其他都為 true |
Object | true |
2.== 的判斷
"" == 0 //true
" " == 0 //true
"" == true //false
"" == false //true
" " == true //false "空格"轉化為數(shù)字為NaN
!" " == true //false 髓霞!的操作對象為非空字符串時返回false
!" " == false //true
"hello" == true //false
"hello" == false //true
"0" == true //false
"0" == false //true
"00" == false //true
"0.00" == false //true
先來總結一下
特殊 | 結果 |
---|---|
null == undefined | true |
number == string | number == toNumber(string) ,看字符串是否能轉成數(shù)字 |
Object == String or Number | toPrimitive(Object) == |
Boolean == (any) | toNumber(Boolean) ==(any),把布林值轉化為數(shù)字 |
toNumber
類型 | 結果 |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | false--0 ,true--1 |
String | “abc” -> NaN, “123” -> 123 |
toPrimitive
對于 Object 類型畦戒,先嘗試調用 .valueOf 方法獲取結果方库。 如果沒定義,再嘗試調用 .toString方法獲取結果