FE Workflow
js>es5

非严格相等

两端类型一致

  • NaN 与 NaN 比较为 false
  • 除 NaN 外,两端类型一致时正常比较
# 一种特殊情况 NaN
console.log(NaN == NaN) # false

# 除NaN外,两端类型一致时正常比较
console.log(1 == 2) # false
console.log('abc' == 'abc') # true
console.log(null == null) # true
console.log(undefined == undefined) # true
console.log([] == []) # false

两端类型不一致

  • 一种特殊情况:null 和 undefined 比较
  • 两种规则:两端为原始类型转数字;两端一端为对象,对象转原始
# 一种特殊情况,null和undefined比较为true
null == undefined # true
null == 1 # false

# 两种规则,两端为原始类型转数字
1 == '1' # true
1 == true # true
false == '0' # true

# 两种规则,两端一端为对象,对象转原始
# 对象转原始类型分三步:
  # 1、查看对象有没有 [][Symbol.toPrimitive] 函数
  # 2、查看对象有没有 [].valueOf 函数
  # 3、调用对象的 [].toString 函数
[] == 2 # false
['1'] == 1 # true
非严格相等
两端类型一致
两端类型不一致