前端面试 JavaScript— == 和 ===有什么区别?
Posted aiguangyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端面试 JavaScript— == 和 ===有什么区别?相关的知识,希望对你有一定的参考价值。
===叫做严格相等,是指:左右两边不仅值要相等,类型也要相等,例如'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
以上是关于前端面试 JavaScript— == 和 ===有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章