说说 == 和 === 的区别,以及隐式类型转换规则

== vs ===

== 的转换规则

  1. null == undefined → true(二者相等,但不与其他值相等)
  2. number == string → 字符串转数字再比较
  3. boolean == 其他 → boolean 先转数字(true→1, false→0)
  4. object == 原始类型 → object 先转原始类型(调用 valueOf / toString)
null == undefined   // true
null == 0           // false
'' == 0             // true  ('' → 0)
'1' == 1            // true  ('1' → 1)
true == 1           // true  (true → 1)
[] == false         // true  ([] → '' → 0, false → 0)
[] == 0             // true
[1] == 1            // true  ([1] → '1' → 1)

// 经典面试题
let a = {}
a.toString = () => '1'
a == 1   // true (a → '1' → 1)

建议

同分类其他题目