if的判斷
if(condition) {
statement
}
condition的值會自動調(diào)用Boolean()轉(zhuǎn)換函數(shù)將這個(gè)表達(dá)式的結(jié)果轉(zhuǎn)換為一個(gè)布爾值。如果condition值為true則執(zhí)行括號內(nèi)語句statement。
Boolean()轉(zhuǎn)換
| 數(shù)據(jù)類型 | 轉(zhuǎn)換位false的值 |
|---|---|
| Boolean | false |
| String | ""(空字符串)為false |
| Number | 0和NaN為false |
| Object | 全為true |
| Undefined | false |
| Null | false |
例子
if (" ") {
console.log('blank')
}//true,輸出blank,if()內(nèi)不是空字符串有空格
if ("") {
console.log('empty')
}//false,不輸出,if()內(nèi)空字符串
if ([0]) {
console.log('array')
}//true 輸出array,[0]是空數(shù)組
==的判斷
在轉(zhuǎn)化不同的數(shù)據(jù)類型時(shí),有以下基本規(guī)則
- 如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值
- 如果一個(gè)操作數(shù)是字符串,另一個(gè)數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值
- 如果一個(gè)操作數(shù)是對象,另一個(gè)操作數(shù)不是,則調(diào)用對象的valueOf()方法,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較。
一些特殊情況
| 表達(dá)式 | 值 |
|---|---|
| null == undefined | true |
| NaN == NaN | false |
| false == 0 | true |
| undefined == 0 | false |
| null == 0 | fasle |
| "1" == 1 | true |
例子
"" == 0 // true
" " == 0 //true
"hello" == true //false
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == 1 // true