javascript中有兩組相等的運算符:===(嚴格相等),!==(嚴格不相等)和==(相等),!=(不等)。
===和!==會比較兩個基礎類型值是否相等,或則兩個複雜對象是否指向同一個地址。
"111"===111 //false。
111 ===111 //true。
==和!=則會先把比較值進行類型轉化,轉化爲想同類型後再進行比較。因此只有在兩個比較值類型一致時,它才能與第一組相等運算符等同。
undefined和null與自己比較時結果爲true,他們相互比較的結果也爲true,但與其他類型比較時爲false。原始類型(數值,布爾類型和字符類型)進行比較時,會先轉換爲數值類型再進行比較,對象和原始類型比較時,會先將對象轉化爲原始類型,然後再進行比較。實例:
null==undefined; //true;
0==null; //false;
false=='0'; //true;
false=='false'; //false
'\n123\t'==123 //true
var p = {toString:function(){return '1'}}
p==1 ; //true;
爲了避免出現隱含的錯誤,推薦使用===和!==運算。