相等操作符
ECMAScript提供兩組操作符:
相等和不相等——先轉(zhuǎn)換再比較
全等和不全等——僅比較而不轉(zhuǎn)換
- 1. 相等(==)和不想等(!=)
- 如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值——false轉(zhuǎn)換為0互婿,而true轉(zhuǎn)換為1捣郊;
- 如果有一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)值慈参,則在比
較相等性之前先將字符串轉(zhuǎn)換為數(shù)值呛牲; - 如果有一個(gè)操作數(shù)是對(duì)象,另一個(gè)操作數(shù)還是對(duì)象驮配,則調(diào)用對(duì)象的valueOf()方法娘扩,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較着茸。
這兩個(gè)操作數(shù)在進(jìn)行比較時(shí)要遵循下列規(guī)則
- null 和 undefined 是相等的
- 要比較相等之前,不能將 null 和 undefined 轉(zhuǎn)換成其他任何值琐旁。
- 如果有一個(gè)操作數(shù)是NaN涮阔,則相等操作符返回false,而不想等操作符返回true。即使兩個(gè)數(shù)都是NaN旋膳,相等操作符也返回false澎语, NaN 不等于 NaN。
- 如果兩個(gè)操作數(shù)都是對(duì)象验懊,則比較它們是不是同一個(gè)對(duì)象擅羞。
- null == undefined (true)
- "NaN" == NaN (false)
- 5 == NaN (false)
- NaN == NaN(false)
- NaN != NaN(true)
- false == 0 (true)
- true == 1 (true)
- true == 2(false)
- undefined == 0(false)
- null == 0 (false)
- "5" == 5(true)
-
2. 全等(===)和不全等(!==)
兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換下相等或不相等。
var result1 = ("55" == 55); //true
var result2 = ("55" === 55); //false
var result1 = ("55" != 55); //false
var result2 = ("55" !== 55); //true
var result1 = (null == undefined); //true
var result2 = (null === undefined); //false