字符串和数字之间的相等比较
如果Type(x)是数字,Type(y)是字符串,则返回x == ToNumber(y)的结果
如果Type(x)是字符串,Type(y)是数字,则返回ToNumber(x) == y的结果
其他类型和布尔类型之间的相等比较
如果Type(x)是布尔类型,则返回ToNumber(x) == y的结果
如果Type(y)是布尔类型。则返回x == ToNumber(y)的结果
var x = true
var y = "22"
console.log(x == y) //false
var x = "22"
var y = false
console.log(x == y) //false
null和undefined之间的比较
如果x为null,y为undefined,则结果为true
如果y为null,x为undefined,则结果为true
var a = null;
var b
console.log(a == b) //true
console.log(b == null) //true
console.log(a == false) //false
console.log(b == false) //false
console.log(a == "") //false
console.log(b == "") //false
console.log(a == 0) //false
console.log(b == 0) //false
对象和非对象之间的相等比较
如果Type(x)是字符串或数字,Type(y)是对象,则返回x == ToPrimitive(y)的结果
如果Type(x)是对象,Type(y)是字符串或数字,则返回ToPrimitive(x) == y的结果
var a = 22
var b = [22]
console.log(a == b) //true
[22]首先调用ToPrimitive抽象操作,返回“22”,变成“22” == 22,然后又变成22 == 22,最后两者相等
以上内容是个人的一点总结,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。