Javascript 中關於if(xx)和 x==y的判斷


 

Javascript 中關於if(xx)和 x==y的判斷是非常基礎但卻十分重要的內容,以下是筆者學習的一些總結:

1、if(xx)的判斷:

在if(xx)的判斷中,括號里的內容會強制轉換會布爾類型,結果為true則后面語句執行,為false則不執行。在此注意一條就可以了:對於括號里的表達式,會被強制轉換為布爾類型.

如何強制轉換呢?規則如下:

 

舉幾個栗子,如下代碼輸出什么?

A:

if ("hello") {

console.log("hello")

}

括號里的字符串會強制轉換為布爾類型,結果為true,后面語句執行,結果輸出hello.

B: if ("") {

console.log('empty')

}

括號里是個空字符串,轉換為false,后面語句不執行。

C: if (" ") {

console.log('blank')

}

括號里像一個空字符串,但其實不是,它里面有空格,所以它是空白字符串,轉換為true,后面語句執行,結果輸出blank。

D:

if ([0]) {

console.log('array')

}

 

括號里是個對象,轉換為true,后面語句執行,結果輸出array。

E:

if ('0.00') {

console.log('0.00')

}

括號里是字符串,轉換為true,后面語句執行,結果輸出0.00

 

2、a==b的判斷

首先,我們知道:

JS中的值有兩種類型:原始類型(Primitive)、對象類型(Object)。

基本類型包括:Undefined、Null、Boolean、Number和String等五種。

Undefined類型和Null類型的都只有一個值,即undefined和null;Boolean類型有兩個值:true和false;Number類型的值有很多很多;String類型的值理論上有無數個。

所有對象都有valueOf()和toString()方法,它們繼承自Object,當然也可能被子類重寫。

表達式: X == Y

其中X和Y是上述六種類型中某一種類型的值,當X和Y的類型相同時,X==Y可以轉化為X===Y。

其他類型情況就多了,以圖來說明:

 

 

圖1中,

當布爾值與其他類型的值作比較時,布爾值會轉化為數字

             true -> 1             false -> 0
N表示ToNumber操作,即將操作數轉為數字。

 

       P表示ToPrimitive操作,即將操作數轉為原始類型的值。對於 Object 類型,先嘗試調用 .valueOf 方法獲取結果。

如果沒定義,再嘗試調用 .toString方法獲取結果

        我們把Undefined和Null用不確定的、沒有的或者空的部分來描述,把Boolean、Number、String和Object用存在的、確實

的、有和非空的部分來描述。    那這兩個部分中的任何值做==運算,結果當然都是false。 undefined和null同屬於一個部分,

它們做= =運算自然為true. 所以undefined == null,結果是true。且它倆與所有其他值比較的結果都是false。

可以看出在類型轉換的過程中,有向數字number轉換的方向:

        String == Boolean,需要兩個操作數同時轉為Number。

        String/Boolean == Number,需要String/Boolean轉為Number。

        Object == Primitive,需要Object轉為Primitive(具體通過valueOf和toString方法)

 

 

暫時先寫到這里了,有點粗糙,以后復習時再加工,有不對之處歡迎批評指正。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM