使用相等運(yùn)算符的時(shí)候闯第,即使是不同的類(lèi)型也會(huì)被認(rèn)為是相等能犯。
== 號(hào)的比較方法
- 如果是相等的類(lèi)型,
javascript
會(huì)比較他們的值或者是對(duì)象值沈贝; - 如果比較的時(shí)候杠人,遇到了字符串,布爾值就會(huì)調(diào)用
toNumber()
的方法宋下; - 如果比較的時(shí)候嗡善,遇到了對(duì)象,則調(diào)用
toPrimitive()
的方法学歧。
值類(lèi)型 | 結(jié)果 |
---|---|
undefined |
NaN |
null |
+0 |
布爾值 | 如果是 true 罩引,返回 1 ;如果是false 枝笨,返回0
|
字符串 | 如果只包含數(shù)字就返回?cái)?shù)字袁铐,否則返回NaN
|
對(duì)象 | 使用 valueof 方法的結(jié)果是原始值,返回原始值横浑;或者是 toString 方法是原始值剔桨,則返回這個(gè)值;其他情況是錯(cuò)誤 |
栗子
console.log('yy' == true) // false
=== 號(hào)的比較方法
首先是不是相同的類(lèi)型徙融,返回 false
领炫;如果是相同類(lèi)型呢?
類(lèi)型 | 值 | 結(jié)果 |
---|---|---|
數(shù)字 |
x 和 y 的數(shù)值相同 |
true |
字符串 |
x 和y 是相同的字符串 |
true |
對(duì)象 |
x 和y 是同一個(gè)對(duì)象 |
true |
栗子
var person1 = {
name : 'yy'
}
var person2 = {
name : 'yy'
}
console.log(person1 === person2) // false