一、if(變量)的用法
if條件語(yǔ)句非常簡(jiǎn)單荤胁,如下:
if (條件) {
如果條件為 true 時(shí)執(zhí)行的代碼
}
一般『條件』是由邏輯表達(dá)式組成瞧预,比如:
if (age > 20 && name == '張三') {
return "helloWorld"
}
但是除了這種常規(guī)的條件判斷之外,還有一些非常規(guī)的仅政,比如:
if(age){
return "helloWorld"
}
這種判斷『變量』的方式垢油,具體表達(dá)什么含義呢?如何使用圆丹?以下幾種場(chǎng)景滩愁,具體分析 :
1. 當(dāng)if括號(hào)里面的表達(dá)式Boolean
時(shí),直接判斷
if (true){
console.log("true"); //true
}
if (false){
console.log("true"); //false
}
2.當(dāng)if括號(hào)里面的表達(dá)式為Number時(shí)辫封,分兩種情況硝枉,當(dāng)number為+0,-0倦微,NaN的時(shí)候妻味,為false;其他為true。
if(0){
console.log("true"); //false
}
if(NaN){
console.log("true"); //false
}
if(1){
console.log("true"); //true
}
3.當(dāng)if括號(hào)里面的表達(dá)式為String時(shí)欣福,空字符串為false责球,其他為true;
if(""){
console.log("true"); //false
}
if("abc"){
console.log("true"); //true
}
4.當(dāng)if括號(hào)里面的表達(dá)式為Undefined時(shí),為false;
if(Undefined){
console.log("true"); //false
}
5.當(dāng)if括號(hào)里面的表達(dá)式為null時(shí),為false棕诵;
if(null){
console.log("true"); //false
}
toBoolean
類(lèi)型 | 結(jié)果 |
---|---|
undefined | false |
null | false |
Boolean | 直接判斷 |
string | ""(空字符串)為false裁良,其他為true |
Object | true |
Number | +0,-0校套,Nan為false价脾,其他為true |
二. a==b的判斷
==是比較兩個(gè)值是否相等,相同類(lèi)型直接比較笛匙,不同類(lèi)型的話侨把,看情況轉(zhuǎn)換。
String==Number --->toNumber(String)==Number
"" = 0 ; //true妹孙,因?yàn)椤啊鞭D(zhuǎn)換為0
" " = 0 ; //true
"hello" == 1 //false 秋柄,因?yàn)?hello"轉(zhuǎn)換為NaN
"hello" == 0 //false,同理
Boolean==(any) --->toNumber(Boolean)==(any)
1==true; //true,因?yàn)閠rue轉(zhuǎn)換為1
0==false;//true 蠢正,因?yàn)閒alse轉(zhuǎn)換為0
"0" == true //false
"0" == false //true
"00" == false //true
"0.00" == false //true
Object==String/Number---->toPrimitive(Object)
對(duì)于 Object 類(lèi)型骇笔,先嘗試調(diào)用 .valueOf 方法獲取結(jié)果。 如果沒(méi)定義嚣崭,再嘗試調(diào)用 .toString方法獲取結(jié)果
{} == true // false
[] == true //false
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == "[object Object]" //false
obj == 1 //true
obj == true //true
null==undefined笨触,//true
==知識(shí)點(diǎn)
- 如果兩個(gè)值類(lèi)型相同,則執(zhí)行嚴(yán)格相等的運(yùn)算
- 如果兩個(gè)值的類(lèi)型不同
- 如果一個(gè)是null雹舀,一個(gè)是undefined芦劣,那么相等
- 如果一個(gè)是數(shù)字,一個(gè)是字符串说榆,先將字符串轉(zhuǎn)為數(shù)字虚吟,然后比較
- 如果一個(gè)值是true/false則將其轉(zhuǎn)為1/0比較
- 如果一個(gè)值是對(duì)象,一個(gè)是數(shù)字或字符串签财,則嘗試使用valueOf和toString轉(zhuǎn)換后比較
- 其它就不相等了
toNumber
類(lèi)型 | 結(jié)果 |
---|---|
Undefined | NaN |
Null | 0 |
Boolean | ture->1,false->0 |
String | (""-->0, " "-->0 )空字符串與空白字符串轉(zhuǎn)換數(shù)值0,abc"->NaN,"123"->123 |