JavaScript 在使用比较符的时候会使用 ==,但是==使用的时候会有一些不可思议的效果
例如
[] == 0 => true
[] == '' => true
undefined == null => true
[1,2] == '1,2' => true
true == '123' => false
看ECMA-262规范会发现,所有的规则都已经写好 a == b
特殊情况 null,undefined 二者相等, null == null ,null == undefined,null不等于其他的任何值。
1.比较类型,二者类型一样,等同于a===b
2.二者类型是否有数字,有则 Number(a) === Number(b)
3.二者类型是否有bool类型,有则 Number(a) === Number(b)
4.二者类型有字符串类型,有则 toString(a) === toString(b)
5.都是对象,则比较二者引用是否相同 a === b