1. 如果两个值类型相同,则直接比较它们的值。
  2. 如果一个值是 null,另一个值是 undefined,则它们相等。
  3. 如果一个值是数字,另一个值是字符串,则将字符串转换为数字后再比较。
  4. 如果一个值是布尔值,另一个值是非布尔值,则将布尔值转换为数字后再比较。
  5. 如果一个值是对象,另一个值是数字、字符串或布尔值,则将对象转换为原始值后再比较。
xy=====
undefinedundefined
nullnull
truetrue
falsefalse
'foo''foo'
00
+0-0
+00
-00
0n-0n
0false
""false
""0
'0'0
'17'17
[1, 2]'1,2'
new String('foo')'foo'
nullundefined
nullfalse
undefinedfalse
{ foo: 'bar' }{ foo: 'bar' }
new String('foo')new String('foo')
0null
0NaN
'foo'NaN
NaNNaN

说明:

  • ✅ 表示比较结果为 true
  • ❌ 表示比较结果为 false