標籤:

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 --> 0

boolean --> 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:前端入門 |