= 賦值運算符 == 等于 === 嚴格等于
== 相等? 先檢查兩個操作數(shù)數(shù)據(jù)類型,如果相同, 則進行===比較课梳, 如果不同理卑, 會進行一次類型轉(zhuǎn)換翘紊, 轉(zhuǎn)換成相同類型后再進行比較。
1藐唠、如果兩個值類型相同帆疟,進行 === 比較鹉究。
2、如果兩個值類型不同踪宠,他們可能相等自赔。根據(jù)下面規(guī)則進行類型轉(zhuǎn)換再比較:
? a、如果一個是null柳琢、一個是undefined绍妨,那么[相等]。
? b柬脸、如果一個是字符串他去,一個是數(shù)值,把字符串轉(zhuǎn)換成數(shù)值再進行比較肖粮。
? c孤页、如果任一值是 true,把它轉(zhuǎn)換成 1 再比較涩馆;如果任一值是 false行施,把它轉(zhuǎn)換成 0 再比較。
? d魂那、如果一個是對象蛾号,另一個是數(shù)值或字符串,把對象轉(zhuǎn)換成基礎類型的值再比較涯雅。對象轉(zhuǎn)換成基礎類型鲜结,利用它的toString或者valueOf方法。js核心內(nèi)置類活逆,會嘗試valueOf先于toString精刷;例外的是Date,Date利用的是toString轉(zhuǎn)換蔗候。非js核心的對象怒允,令說(比較麻煩,我也不大懂)
? e锈遥、任何其他組合纫事,都[不相等]。
=== 絕對相等所灸,即數(shù)據(jù)類型與值都必須相等丽惶。
? ? ? (1)如果類型不同,就一定不相等
∨懒ⅰ(2)如果兩個都是數(shù)值钾唬,并且是同一個值,那么相等;如果其中至少一個是NaN知纷,那么不相等壤圃。(判斷一個值是否是NaN,只能使用isNaN( ) 來判斷)
(3)如果兩個都是字符串,每個位置的字符都一樣民镜,那么相等,否則不相等冲杀。
(4)如果兩個值都是true睹酌,或都是false权谁,那么相等,否則不相等
”镅亍(5)如果兩個值都引用同一個對象或都是函數(shù)旺芽,那么相等,否則不相等
》摹(6)如果兩個值都是null采章,或都是undefined,那么相等壶辜,否則不相等
示例
console.log('10'==10); // true
console.log('10'===10); // false
console.log(null instanceof Object); // false
console.log(null === undefined); // false
console.log(null == undefined); // true
console.log(typeof NaN); // number
console.log(NaN == NaN); // false
console.log(0 == "0"); // true
console.log(true == "20"); // false
console.log(true == "1" ); //true
好好拼事業(yè)吧悯舟,愛情不值得。