===叫做严格相等,是指:左右两边不仅值要相等,类型也要相等,例如'1'===1的结果是false,因为一边是string,另一边是number。
==不像===那样严格,对于一般情况,只要值相等,就返回true,但==还涉及一些类型转换,它的转换规则如下:
1. 两边的类型是否相同,相同的话就比较值的大小,例如1==2,返回false;
2. 判断的是否是null和undefined,是的话就返回true;
3. 判断的类型是否是String和Number,是的话,把String类型转换成Number,再进行比较;
4. 判断其中一方是否是Boolean,是的话就把Boolean转换成Number,再进行比较;
5. 如果其中一方为Object,且另一方为String、Number或者Symbol,会将Object转换成字符串,再进行比较;
console.log({a: 1} ==true);
// false
console.log({a: 1} =="[object Object]");
// true