​JavaScript​​中,类型转换只有三种:

  1. 转换成数字
  2. 转换成布尔值
  3. 转换成字符串

经典类型面试题

console.log([]==![]); // true

代码分析

  1. 左侧是一个对象(数组)
  2. 右侧是一个布尔值,对象​​[]​​​转换成布尔值​​true​​​,因为除了​​null​​​所有对象都转换成布尔值,所以​​![]​​​结果为​​false​
  3. 此时相当于​​对象==布尔值​​,依据类型转换规则,转换成数字类型进行比较
  4. 对象(空数组)转换成​​0​​​,布尔值​​false​​​转换成​​0​
  5. 即​​0==0​​​,返回​​true​

类型转换规则,如下图:

JavaScript类型转换_类型转换