if(xx)的判斷
if語句是編程語言最常用的語句,語法:
if(condition){
//true statement
}else {
//false statement
}
if通過布爾值判斷結(jié)果,如果表達式為真執(zhí)行第一個代碼塊內(nèi)語句,如果為假執(zhí)行第二個代碼塊內(nèi)語句,其中condition可以是任意表達式,當condition不為布爾值時,會將condition強制轉(zhuǎn)換為布爾值,如:
if(0) {
console.log('0')
}else if(1) {
console.log('1')
}
if(''){
console.log("no")
}else if(" ") {
console.log("empty")
}
輸出結(jié)果
if(0)為false,if(1)為true,輸出結(jié)果為1,if("")為false,if(" ")為true,輸出結(jié)果為empty。
為什么?
Number為+0, ?0,或者 NaN 時為 false,其他為 true,所以第一個輸出1;
String是空字符串為 false,其他都為 true,所以第二個輸出結(jié)果為empty;
轉(zhuǎn)換為布爾值后if通過結(jié)果的false或true判斷是輸出還是執(zhí)行下一個語句。
a==b
一、a和b的數(shù)值和類型都相同時
a==b,當a和b的數(shù)值和類型都相同時,嚴格的執(zhí)行相等的運算。
二、當a和b的數(shù)值類型不相同
a==b,當a和b的數(shù)值類型不相同時:
1.如果a和b一個是null,一個是undefined時,相等。
2.如果a和b一個是數(shù)字,一個是字符串,先將字符串轉(zhuǎn)為數(shù)字,然后比較。
3.如果a和b一個值是true,一個值是false則將其轉(zhuǎn)為1和0比較。
4.如果a和b一個值是對象,一個是數(shù)字或字符串,則嘗試使用valueOf和toString轉(zhuǎn)換后比較。
5.其它情況都不相等。