互聯網開(kāi)發&品牌全案設計(jì)
12年(nián) 實戰經驗,品質服務
=,很(hěn)好(hǎo)理(lǐ)解就(jiù)是(shì)賦值的(de)意思例如(rú):
Var a=1;意思把1賦值給a
Console.log(a);輸出顯示是(shì)1;
==(equality)等于, ===(identity)恒等,兩邊值類型相(xiàng)同時(shí),用(yòng)法等同于===;不(bù)同的(de)時(shí)候,要(yào)先進行(xíng)類型轉換,再比較。
===,不(bù)做(zuò)類型轉換,類型不(bù)同的(de)一(yī)定不(bù)等。
具體(tǐ)分(fēn)析:
先說(shuō) ===,這(zhè)個(gè)比較簡單。下(xià)面的(de)規則用(yòng)來(lái)判斷兩個(gè)值是(shì)否===相(xiàng)等:
<pre>
|
如(rú)alert('1'==1);//結果是(shì)true alert('1'===1);//結果是(shì)false |
</pre>
1、如(rú)果類型不(bù)同,就(jiù)[不(bù)相(xiàng)等]
2、如(rú)果兩個(gè)都(dōu)是(shì)數(shù)值,并且是(shì)同一(yī)個(gè)值,那(nà)麽[相(xiàng)等];(!例外(wài))的(de)是(shì),如(rú)果其中至少(shǎo)一(yī)個(gè)是(shì)NaN,那(nà)麽[不(bù)相(xiàng)等]。判斷一(yī)個(gè)值是(shì)否是(shì)NaN,隻能(néng)用(yòng)isNaN()來(lái)判斷。
3、如(rú)果兩個(gè)都(dōu)是(shì)字符串,每個(gè)位置的(de)字符都(dōu)一(yī)樣,那(nà)麽[相(xiàng)等];否則[不(bù)相(xiàng)等]。
4、如(rú)果兩個(gè)值都(dōu)是(shì)true,或者都(dōu)是(shì)false,那(nà)麽[相(xiàng)等]。
5、如(rú)果兩個(gè)值都(dōu)是(shì)null,或者都(dōu)是(shì)undefined,那(nà)麽[相(xiàng)等]。
6、引用(yòng)類型比較,進行(xíng)“指針地(dì)址”比較,如(rú)果兩個(gè)值都(dōu)引用(yòng)同一(→yī)個(gè)對(duì)象或函數(shù),那(nà)麽[相(xiàng)等];否則[不(bù)相(xiàng)等]。
再說(shuō) ==,根據以下(xià)規則:
<pre>
|
如(rú)alert(null==undefined);//結果是(shì)true alert(null===undefined);//結果是(shì)false |
1、如(rú)果兩個(gè)值類型相(xiàng)同,進行(xíng) === 比較。
2、如(rú)果兩個(gè)值類型不(bù)同,他(tā)們可(kě)能(néng)相(xiàng)等。根據下(xià)面規則進行(xíng)類型轉換再比較:
a、如(rú)果一(yī)個(gè)是(shì)null、一(yī)個(gè)是(shì)undefined,那(nà)麽[相(xiàng)等],其他(tā)如(rú)”(空(kōng)字符串),false,0都(dōu)不(bù)等。
b、如(rú)果一(yī)個(gè)是(shì)字符串,一(yī)個(gè)是(shì)數(shù)值,把字符串轉換成數(shù)值再進行(xíng)比較。
c、如(rú)果任一(yī)值是(shì) true,把它轉換成 1 再比較;如(rú)果任一(yī)值是(shì) false,把它轉換成 0 再比較。
d、如(rú)果一(yī)個(gè)是(shì)對(duì)象,另一(yī)個(gè)基本類型,把對(duì)象轉換≤成基礎類型的(de)值再比較。對(duì)象轉換成基礎類型,利用(yòng)它的(de)toString或者valueOf方法。js核心內(nèi)置類,會(huì)嘗試valueOf先于toString;例外(wài)的(de)是(shì)Date,Date利用(yòng)的(de)是(shì)toString轉換。
對(duì)于Array,Object等高(gāo)級類型,==和(hé)===是(shì)沒有(yǒu)區(qū)别的(de)
<pre>
var a = [1,2,3];
var b = [1,2,3];
alert(a == b); alert(a === b); &nb sp; // 兩個(gè)結果都(dōu)是(shì)false
alert(a.sort().toString() == b.sort().toString()); // 結果是(sh★ì)true
alert(a.sort().toString() === b.sort().toString()); &n∞bsp; // 結果是(shì)true
var a = $(".editor");
var b = $(".editor");
console.log(a === b);
//結果是(shì) false
console.log(a.is(b));
//結果是(shì) true
</pre>