字符串和数字之间的相等比较

  1. 如果Type(x)是数字,Type(y)是字符串,则返回x == ToNumber(y)的结果

  2. 如果Type(x)是字符串,Type(y)是数字,则返回ToNumber(x) == y的结果

其他类型和布尔类型之间的相等比较

  1. 如果Type(x)是布尔类型,则返回ToNumber(x) == y的结果

  2. 如果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之间的比较

  1. 如果x为null,y为undefined,则结果为true

  2. 如果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

对象和非对象之间的相等比较

  1. 如果Type(x)是字符串或数字,Type(y)是对象,则返回x == ToPrimitive(y)的结果

  2. 如果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,最后两者相等

以上内容是个人的一点总结,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏


william
2.7k 声望826 粉丝

love and share