JavaScript == 等號運算子

admin發表於2018-10-20

等號運算子可以比較左右兩個運算數是否相等。

如果相等則返回true,否則返回false。

初學者可能認為此運算子極其簡單,這可能太過於輕視此運算子。

下面將通過程式碼例項對它的用法做一下詳細介紹。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let a=1,b=2;
console.log(a==b);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/161927jz81smqszee7ddde.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

數字之間的比較直觀,相等則返回true,否則返回false。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(true==1);
console.log(false==0);
console.log(true==2);
console.log(false==-2);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/161955tymw2jga7yg6b2gb.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果運算數中有一個是布林值,一個是數字。

那麼首先將布林值轉換為數字,true轉換為1,false轉換為0。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log("8"==8);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162021vwj67vxsw6krwyv7.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果兩個運算元一個是數字一個是字串。

那麼首先嚐試將字串轉換為數字,然後進行比較。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj={
  toString:function(){
      return "螞蟻部落"
  }
}
console.log(obj=="螞蟻部落");

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162047v7hjdwajns6dn4ds.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果運算元中一個是物件,一個是字串。

那麼首先嚐試將物件轉換為字串,再進行比較。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj={
    valueOf:function(){
        return 5;
    }
}
console.log(obj==5);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162115d0ujsgxuzssg28g5.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果運算元中一個是物件,一個是數字。

那麼首先嚐試將物件轉換為數字,然後再去比較。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(null==undefined);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162140xg829yqljuq18u83.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

null和undefined是兩個特殊的值,但是用等號比較兩者,返回值為true。

關於null與undefined的基本用法可以參閱JavaScript undefined與null區別一章節。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(NaN=="A");
console.log(NaN==NaN);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162232blkrql17qaurqs1z.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

NaN與任何運算元比較返回值都是false,包括與自己比較。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log([5]==[5]);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201810/20/162255e7lrk9uluk9j7zp9.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

返回值竟然是false,說明兩者不相等。

雖然看起來兩個陣列是一模一樣,簡直就是毫無瑕疵的雙胞胎。

再像的雙胞胎也是兩個獨立的個體,上面是兩個不同的陣列物件。

如果運算元是物件(引用型別資料),比較是兩個物件的地址。

關於引用型別資料可以參閱JavaScript 值型別和引用型別一章節。

總結如下:

等號運算子比較包容一些,運算元可以進行資料型別轉換。

這一點與全等運算子(===)不同,具體參閱JavaScript === 運算子一章節。

關於資料型別轉換可以參閱JavaScript 資料型別轉換一章節。

相關文章