==隐式转换规则

44 阅读1分钟
  • 相同数据类型直接比较
  • undefined == null 为true, undefined,null除了与自身对比和互相对比为true外,其余都为false
  • 不同数据类型,对象先调用toString(),再调用Number()。布尔值调用Number();如果在转换的过程中发现与另一个数据的类型一致,则停止下一步的转换,当前进行对比

数据转Boolean为false的情况

  1. undefined
  2. null
  3. NaN
  4. 0
  5. ''
  6. false

其余数据转为true

特殊数据转Number类型

  1. false 转为0
  2. true 转为1
  3. null 转为0
  4. 空字符串和字符串中含有空格等转0
  5. undefined转为NaN
  6. []转为0,[1] ,[['1']] 转为1,[1,2]转为NaN,注意,多维数组采用toString()会逐级解构,然后,拼接

规律:对于引用数据类型,如Object,Array都会先调用toString()后再调用Number()

关于number,boolean,string对象的隐式转换

通过new 构建后是对象,它们的toString方法被改写,会返回对应的值,而不会返回'[object Number]'的值