課程
/前端開發(fā)
/JavaScript
/JavaScript進(jìn)階篇
numa==numb怎么這里要兩個(gè)等號
2015-01-01
源自:JavaScript進(jìn)階篇 2-10
正在回答
??????JavaScript支持“=”、“==”和“===”運(yùn)算符。你應(yīng)當(dāng)理解這些(賦值、相等、恒等)運(yùn)算符之間的區(qū)別,并在編碼過程中小心使用。
??????JavaScript對象的比較是引用的比較,而不是值的比較。對象和其本身是相等的,但和其他任何對象都不相等。如果兩個(gè)不同的對象具有相同數(shù)量的屬性,相同的屬性名和值,它們依然是不相等的。相應(yīng)位置的數(shù)組元素是相等的兩個(gè)數(shù)組也是不相等的。
??????嚴(yán)格相等運(yùn)算符“===”首先計(jì)算其操作數(shù)的值,然后比較這兩個(gè)值,比較過程沒有任何類型轉(zhuǎn)換:
??????如果兩個(gè)值類型不相同,則它們不相等。如果兩個(gè)值都是null或者都是undefined,則它們不相等。
??????如果兩個(gè)值都是布爾值true或false,則它們相等。
??????如果其中一個(gè)值是NaN,或者兩個(gè)兩個(gè)值都是NaN,則它們不相等。NaN和其他任何值都是不相等的,包括它本身!??!通過x!==x來判斷x是否為NaN,只有在x為NaN的時(shí)候,這個(gè)表達(dá)式的值才為true。
??????如果兩個(gè)值為數(shù)字,且數(shù)值相等,則它們相等。如果一個(gè)為0,另一個(gè)為-0,則它們同樣相等。
??????如果兩個(gè)值為字符串,且所含的對應(yīng)位上的16位數(shù)完全相等,則它們相等。
??????如果它們的長度或內(nèi)容不同,則它們不等。兩個(gè)字符串可能含義完全一樣且所顯示出手字符也一樣,但具有不同編碼的16位值。JavaScript并不對Unicode進(jìn)行標(biāo)準(zhǔn)化的轉(zhuǎn)換,因此像這樣的字符串通過"==="和"=="運(yùn)算符的比較結(jié)果也不相等。
??????如果兩個(gè)引用值同一個(gè)對象、數(shù)組或函數(shù),則它們是相等的。如果指向不同的對象,則它們是不等的。盡管兩個(gè)對象具有完全一樣的屬性。
??????相等運(yùn)算符“==”和恒等運(yùn)算符相似,但相等運(yùn)算符的比較并不嚴(yán)格。如果兩個(gè)操作數(shù)不是同一類型,那么相等運(yùn)算符會(huì)嘗試一些類型轉(zhuǎn)換,然后進(jìn)行比較:
??????如果兩個(gè)操作數(shù)的類型相同,則和上文所述的嚴(yán)格相等的比較規(guī)則一樣。
??????如果嚴(yán)格相等,那么比較結(jié)果為相等。如果它們不嚴(yán)格相等,則比較結(jié)果為不相等。
??????如果兩個(gè)操作數(shù)類型不同,“==”相等操作符也可能會(huì)認(rèn)為它們相等。檢測相等將會(huì)遵守如下規(guī)則和類型轉(zhuǎn)換:?
??????1.如果一個(gè)值是null,另一個(gè)是undefined,則它們相等。
??????2.如果一個(gè)值是數(shù)字,另一個(gè)是字符串,先將字符串轉(zhuǎn)換為數(shù)字,然后使用轉(zhuǎn)換后的值比較。
??????3.如果其中一個(gè)值是true,則將其轉(zhuǎn)換為1再進(jìn)行比較。
??????4.如果其中一個(gè)值是false,則將基轉(zhuǎn)換為0再進(jìn)行比較。
??????5.如果一個(gè)值是對象,另一個(gè)值是數(shù)字或字符串,則將對象轉(zhuǎn)換為原始值,然后再進(jìn)行比較。對象通過toString()方法或valueOf()方法轉(zhuǎn)換為原始值。JavaScript核心的內(nèi)置類首先嘗試使用valueOf(),再嘗試使用toString(),除了日期類,日期類只使用toString()轉(zhuǎn)換。那些不是JavaScript語言核心中的對象則通過各自的實(shí)現(xiàn)中定義的方法轉(zhuǎn)換為原始值。其他不同類型之間的比較均不相等.
?
小萬 提問者
舉報(bào)
本課程從如何插入JS代碼開始,帶您進(jìn)入網(wǎng)頁動(dòng)態(tài)交互世界
2 回答代碼的問題
3 回答代碼問題.....
4 回答代碼的邏輯問題
2 回答代碼有問題
1 回答代碼問題啊
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-01-01
??????JavaScript支持“=”、“==”和“===”運(yùn)算符。你應(yīng)當(dāng)理解這些(賦值、相等、恒等)運(yùn)算符之間的區(qū)別,并在編碼過程中小心使用。
??????JavaScript對象的比較是引用的比較,而不是值的比較。對象和其本身是相等的,但和其他任何對象都不相等。如果兩個(gè)不同的對象具有相同數(shù)量的屬性,相同的屬性名和值,它們依然是不相等的。相應(yīng)位置的數(shù)組元素是相等的兩個(gè)數(shù)組也是不相等的。
??????嚴(yán)格相等運(yùn)算符“===”首先計(jì)算其操作數(shù)的值,然后比較這兩個(gè)值,比較過程沒有任何類型轉(zhuǎn)換:
??????如果兩個(gè)值類型不相同,則它們不相等。如果兩個(gè)值都是null或者都是undefined,則它們不相等。
??????如果兩個(gè)值都是布爾值true或false,則它們相等。
??????如果其中一個(gè)值是NaN,或者兩個(gè)兩個(gè)值都是NaN,則它們不相等。NaN和其他任何值都是不相等的,包括它本身!??!通過x!==x來判斷x是否為NaN,只有在x為NaN的時(shí)候,這個(gè)表達(dá)式的值才為true。
??????如果兩個(gè)值為數(shù)字,且數(shù)值相等,則它們相等。如果一個(gè)為0,另一個(gè)為-0,則它們同樣相等。
??????如果兩個(gè)值為字符串,且所含的對應(yīng)位上的16位數(shù)完全相等,則它們相等。
??????如果它們的長度或內(nèi)容不同,則它們不等。兩個(gè)字符串可能含義完全一樣且所顯示出手字符也一樣,但具有不同編碼的16位值。JavaScript并不對Unicode進(jìn)行標(biāo)準(zhǔn)化的轉(zhuǎn)換,因此像這樣的字符串通過"==="和"=="運(yùn)算符的比較結(jié)果也不相等。
??????如果兩個(gè)引用值同一個(gè)對象、數(shù)組或函數(shù),則它們是相等的。如果指向不同的對象,則它們是不等的。盡管兩個(gè)對象具有完全一樣的屬性。
??????相等運(yùn)算符“==”和恒等運(yùn)算符相似,但相等運(yùn)算符的比較并不嚴(yán)格。如果兩個(gè)操作數(shù)不是同一類型,那么相等運(yùn)算符會(huì)嘗試一些類型轉(zhuǎn)換,然后進(jìn)行比較:
??????如果兩個(gè)操作數(shù)的類型相同,則和上文所述的嚴(yán)格相等的比較規(guī)則一樣。
??????如果嚴(yán)格相等,那么比較結(jié)果為相等。如果它們不嚴(yán)格相等,則比較結(jié)果為不相等。
??????如果兩個(gè)操作數(shù)類型不同,“==”相等操作符也可能會(huì)認(rèn)為它們相等。檢測相等將會(huì)遵守如下規(guī)則和類型轉(zhuǎn)換:?
??????1.如果一個(gè)值是null,另一個(gè)是undefined,則它們相等。
??????2.如果一個(gè)值是數(shù)字,另一個(gè)是字符串,先將字符串轉(zhuǎn)換為數(shù)字,然后使用轉(zhuǎn)換后的值比較。
??????3.如果其中一個(gè)值是true,則將其轉(zhuǎn)換為1再進(jìn)行比較。
??????4.如果其中一個(gè)值是false,則將基轉(zhuǎn)換為0再進(jìn)行比較。
??????5.如果一個(gè)值是對象,另一個(gè)值是數(shù)字或字符串,則將對象轉(zhuǎn)換為原始值,然后再進(jìn)行比較。對象通過toString()方法或valueOf()方法轉(zhuǎn)換為原始值。JavaScript核心的內(nèi)置類首先嘗試使用valueOf(),再嘗試使用toString(),除了日期類,日期類只使用toString()轉(zhuǎn)換。那些不是JavaScript語言核心中的對象則通過各自的實(shí)現(xiàn)中定義的方法轉(zhuǎn)換為原始值。其他不同類型之間的比較均不相等.
?