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