=,很好理解就是賦值的意思例如:
Var a=1;意思把1賦值給a
Console.log(a);輸出顯示是1;
==(equality)等于, ===(identity)恒等,兩邊值類型相同時,用法等同于===;不同的時候,要先進行類型轉換,再比較。
===,不做類型轉換,類型不同的一定不等。
具體分析:
先說 ===,這個比較簡單。下面的規則用來判斷兩個值是否===相等:
<pre>
如alert('1'==1);//結果是true alert('1'===1);//結果是false |
</pre>
1、如果類型不同,就[不相等]
2、如果兩個都是數值,并且是同一個值,那么[相等];(!例外)的是,如果其中至少一個是NaN,那么[不相等]。判斷一個值是否是NaN,只能用isNaN()來判斷。
3、如果兩個都是字符串,每個位置的字符都一樣,那么[相等];否則[不相等]。
4、如果兩個值都是true,或者都是false,那么[相等]。
5、如果兩個值都是null,或者都是undefined,那么[相等]。
6、引用類型比較,進行“指針地址”比較,如果兩個值都引用同一個對象或函數,那么[相等];否則[不相等]。
再說 ==,根據以下規則:
<pre>
如alert(null==undefined);//結果是true alert(null===undefined);//結果是false |
1、如果兩個值類型相同,進行 === 比較。
2、如果兩個值類型不同,他們可能相等。根據下面規則進行類型轉換再比較:
a、如果一個是null、一個是undefined,那么[相等],其他如”(空字符串),false,0都不等。
b、如果一個是字符串,一個是數值,把字符串轉換成數值再進行比較。
c、如果任一值是 true,把它轉換成 1 再比較;如果任一值是 false,把它轉換成 0 再比較。
d、如果一個是對象,另一個基本類型,把對象轉換成基礎類型的值再比較。對象轉換成基礎類型,利用它的toString或者valueOf方法。js核心內置類,會嘗試valueOf先于toString;例外的是Date,Date利用的是toString轉換。
對于Array,Object等高級類型,==和===是沒有區別的
<pre>
var a = [1,2,3];
var b = [1,2,3];
alert(a == b); alert(a === b); // 兩個結果都是false
alert(a.sort().toString() == b.sort().toString()); // 結果是true
alert(a.sort().toString() === b.sort().toString()); // 結果是true
var a = $(".editor");
var b = $(".editor");
console.log(a === b);
//結果是 false
console.log(a.is(b));
//結果是 true
</pre>