- 相同数据类型直接比较
- undefined == null 为true, undefined,null除了与自身对比和互相对比为true外,其余都为false
- 不同数据类型,对象先调用toString(),再调用Number()。布尔值调用Number();如果在转换的过程中发现与另一个数据的类型一致,则停止下一步的转换,当前进行对比
数据转Boolean为false的情况
- undefined
- null
- NaN
- 0
- ''
- false
其余数据转为true
特殊数据转Number类型
- false 转为0
- true 转为1
- null 转为0
- 空字符串和字符串中含有空格等转0
- undefined转为NaN
- []转为0,[1] ,[['1']] 转为1,[1,2]转为NaN,注意,多维数组采用toString()会逐级解构,然后,拼接
规律:对于引用数据类型,如Object,Array都会先调用toString()后再调用Number()
关于number,boolean,string对象的隐式转换
通过new 构建后是对象,它们的toString方法被改写,会返回对应的值,而不会返回'[object Number]'的值