关于==
== 代表不需要类型相同,但是经过类型转换之后大小相等
- 首先会判断两者类型是否相同。相同的话就是比大小了
- 类型不相同的话,那么就会进行类型转换
- 会先判断是否在对比 null 和 undefined,是的话就会返回 true
- 判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number
- 判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断
// 字符串和数字比较,字符串转数字 // 布尔与数字比较,布尔转数字 // 字符串和布尔比较,都转成数字 - 判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断
- 如果两者类型都是object,引用都指向同一个对象才为true
转换为boolean
除了undefined, null, '', 0, -0, NaN, false,其他的都会转成true
关于===
=== 代表全等,类型相同,大小相等
Object.is
ES6的新方法 判断两个值是否全等,与ES5中的全等===的区别是:
// 1、NaN的比较
Object.is(NaN, NaN) //true
NaN === NaN // fale
// 2、-0和+0的比较
Object.is(-0, +0) //false
-0 === +0 // true
类型转换表
类型转换的题
- 关于数组,结果是什么,为什么
- [] == [] //
- [] != [] //
- Boolean([]) //
- [] - [] //
- [] + [] //
- [] == 0 //
- [0] == 0 //
- [1] + 0 //