JS入門-1.關於 if(xx)與 a == b 的判斷
if(xx)的判斷
1.if(number)
當 if(number),0、NaN為false,其他值為true
var a = 5if(a){ console.log(true)} // truea = 1if(a){ console.log(true)} // truea = 0if(a){ console.log(true)} // falsea = -1if(a){ console.log(true)} //falsea = NaNif(a){ console.log(true)} //false
2.if(string)
當 if(string),空字元串為false,其他為true
if(hello){ console.log(true)} // trueif( ){ console.log(true)} // trueif(){ console.log(true)} // falseif(0.00){ console.log(true)}
3.if(boolean)
當 if(boolean),直接判斷
if(true){ console.log(true)} // trueif(false){ console.log(true)} // false
4.if(object)
當 if(object),為true
if([1,3,4]){ console.log(true)} // truefunction f(){ var b = 1 + 2; return b; }if(f()){ console.log(true)} //true
5.if(undefined)
當 if(undefined),為false
if(undefined){ console.log(true)} //false
6.if(null)
當 if(null),為false
if(null){ console.log(true)} //false
a == b 的判斷
對於相同類型的a、b,相等的判斷較簡單。以下主要討論不同數據類型的a、b之間進行相等運算時的判斷。
1. string == number
結果為 toNumber(a) == b ,當a無法轉換為number時判斷相等為false
"" == 0 //true " " == 0 //true "hello" == 0 //false "hello" == 1 //false "2" == 2 //true
2. boolean == (any)
Boolean在相等運算時會轉換為數值,true為1,false為0。
"" == true //false "" == false //true " " == true //false "hello" == true //false 1 == true //true 0 == false //true undefined == false //false undefined == true //false null == false //false null == true //false
3. object == number/string
object會試圖使用valueOf和toString轉換後比較
var obj = { a: 0, valueOf: function(){return 1} } obj == 1 //true[] == 0 //true[2] == 2 //true
4. null == undefined //true
toNumber
undefined --> NaN
null --> 0boolean --> true:1, false:0
string --> "abc":NaN,"123":123總結:
做相等運算時,一般傾向於將不同的數據類型都轉化為數值,或是轉化為相同的數據類型.
- 如果兩個值類型相同,則執行嚴格相等的運算- 如果兩個值的類型不同1. 如果一個是null,一個是undefined,那麼相等
2. 如果一個是數字,一個是字元串,先將字元串轉為數字,然後比較 3. 如果一個值是true/false則將其轉為1/0比較 4. 如果一個值是對象,一個是數字或字元串,則嘗試使用valueOf和toString轉換後比較5. 其它就不相等了
推薦閱讀:
※免費直播 | 2018,你最需要的前端學習指南&求職指南!飢人谷
※十年web前端開發工程師告訴你怎樣零基礎入門
※可能是最全的 Node.js 9 新特性整理
TAG:前端入門 |