JavaScript的==和===運算符

JavaScript 提供兩個相等運算符: == ===
     簡單說,它們的區別是相等運算符( == )比較兩個值是否相等,嚴格相等運算符( === )比較它們是否爲「同一個值」。若是兩個值不是同一類型,嚴格相等運算符( === )直接返回 false ,而相等運算符( == )會將它們轉化成同一個類型,再用嚴格相等運算符進行比較。
 
      * 等於運算符運算規則
      對於一個等於表達式: x==y
     1. x y 爲同一類型時:
     1 )若是 x 的類型是 undefined ,則返回 true
     2 )若是 x 的類型是 null ,則返回 true
     3 )若是 x 的類型是 number ,則
          a. 若是 x NaN ,則返回 false
          b. 若是 y NaN ,則返回 false
          c. 若是 x 是和 y 數值同樣的 number ,則返回 true
          d. 若是 x +0 y -0 ,則返回 true
          e. 若是 x -0 y +0 ,則返回 true
          f. 其它狀況則返回 false
     4 )若是 x 的類型是 string ,則只有當 x y 爲一樣的字符串(相同長度和相同字符在相應的位置)時,返回 true ,不然返回 false
     5 )若是 x 類型是 boolean 類型,則只有當 x y 同時爲 true 或者同時爲 false 時,返回 true ,不然返回 false;
     6 )當 x y 指向同一個對象時,返回 true ,不然返回 false
     2. x null y undefined ,返回 true
     3. x undefined y null ,返回 true
     4. x number 類型, y string 類型時,返回 ToNumber(x) == y 的比較結果;
     5. x string 類型, y number 類型時,返回 x== ToNumber(y) 的比較結果;
     6. x 的類型爲 boolean 類型時,返回 ToNumber(x) == y 的比較結果;
     7. y 的類型爲 boolean 類型時,返回 x== ToNumber(y) 的比較結果;
     8. 若是 x string 類型或者是 number 類型, y 是對象,則返回   x == ToPrimitive(y) 的比較結果 ;
     9. 若是 x 是對象 ,y string 類型或者是 number 類型,則返回   ToPrimitive(x) == y. 的比較結果 ;
     10. 其它狀況,則返回 false
     注: 在 [] == 0 或者 [] == false 的時候,空數組被轉換成了0。可是若是直接使用 if([ ]){ } 的時候, 空數組又被認爲是true的。     

eg:Boolean([])==true;//true
  []==0;//true
  []==false;//true
  []==true;//false
  Boolean('0')==true;//true
  "0"==true;//false   
  0==null;//false
  0==false;//true
  Boolean(null)==false;//true
  null==true;//false
  null==false;//false
  Boolean(undefined)==false;//true
  undefined==true;//false
  undefined==false;//false
  Boolean({})==true;//true
  ({})==true;//false                    
  ({})==true;//false 數組

     *嚴格等於運算符運算規則
         對於一個等於表達式: x===y
     (1)若是x和y的類型不一樣,則返回false;
     (2)若是x的類型 爲undefined,則返回true;
     (3)若是x的類型爲Null,則返回true;
     (4)若是x的類型爲Number,則
          a.若是x爲NaN,則返回false;
          b.若是y爲NaN,則返回false;
          c.若是x是和y同樣的Number類型,且數值相同,則返回true;
           d. 若是 x +0 y -0 ,則返回 true;
          e. 若是 x -0 y +0 ,則返回 true;
          f.其它狀況返回false;
    (5)若是x的類型爲string,只有當x和y都爲string類型,且具備 相同長度和相同字符在相同的位置,則返回true,不然返回false;
    (6)若是x爲boolean類型, 則只有當 x y 同時爲 true 或者同時爲 false 時,返回 true ,不然返回 false;
    (7) x y 指向同一個對象時,返回 true ,不然返回 false  

eg:({}==={});//false
  []===[];//false
  (function (){} === function (){});//false
  null===null;//true
  undefined===undefined;//true
  NaN === NaN;//false
  var v1 = {}; var v2 = v1; v1 === v2;//truespa

相關文章
相關標籤/搜索