javaScript中"=="和"==="運算符的區別


相同點:

  兩個運算符均可用於比較兩個值是否相等,可允許操作任意類型的操作數,如果操作數相等則返回true,否則返回false。

 

不同點:

  "==="運算符也稱為嚴格相等運算符,它用來檢測兩個操作數是否嚴格相等。該運算符首先計算其操作數的值,然后比較這兩個值,比較過程中並不會首先對操作符進行任何類型轉換。

  "=="運算符稱為相等運算符,用來檢測兩個操作數是否相等,這里“相等”的定義非常寬松,可以允許進行類型轉換。相等運算符"=="和"==="運算符類似,但相等運算符的比較並不嚴格。如果兩個操作數不是同一類型,那么相等運算符會嘗試對操作數進行一些類型轉換,然后進行比較。例如:

  1.如果一個值是null,另一個是undefined,則他們相等。

  2.如果一個值是數字,另一個是字符串,比較時現將字符串轉換為數字,然后使用轉換后的值比較。

  3.如果其中一個值是true,則將其轉換為1再進行比較。

 

使用情況:

  因為在使用過程中"=="會出現類型轉換,所以為避免在使用"=="過程中出現意想不到的類型轉換而影響比較結果,建議除特殊情況外全部用"==="。(見《JavaScript權威指南》 第六版 268頁)。

 

效率情況:

  由於"=="在計算過程中會存在類型轉換,如果進行很少的操作數判斷的話,則"=="和"==="的效率相差無幾,但是如果進行多次比對的話,則"==="效率整體上會高於"==",測試用例如下,改變for循環次數和運算符(a==b / a===b)即可測試。

 1 var date1 = new Date(); 
 2 var j = 0, k = 0;
 3 for(var i =0; i<10000; i++){
 4     var a = undefined;
 5     var b = null;
 6     a == b ? j++ : k++;
 7 }
 8 var date2 = new Date();
 9 console.log("一共 " + (date2.getTime()-date1.getTime()) + " 毫秒");
10 if(j !== 0){
11     console.log("j==" + j);
12 }else if( k !== 0) {
13     console.log("k==" + k);
14 }

 

 

注:此文為自己學習使用js過程中的學習筆記,文中描述若有不當之處,歡迎高手拍磚。


免責聲明!

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



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