js在不同类型的值比较时的隐性类型转换

我们知道在js中,==是进行的值比较,在比较运算之前,js会将不同类型的值转换为相同类型的值在进行比较,转换情况如下:
1:当比较对象中存在Boolean类型时,任意值与布尔值进行比较的时候都会转换为数值进行比较,(引用类型转换了Boolean均为true;数值0为false,其余均为true;空字符串为false,其余均为true。
2:当比较对象中存在Object类型时,js会尝试使用valueOf方法或toString()放将对象转换为描述对象的数值或字符串
3:数字与字符串比较时,字符串转换为数字,字符串转换数字失败时为NaN,出现情况4;
4:比较对象中存在NaN时均返回false;
5:null和undefined比较时不会进行类型转换但是他们相等,因为undefined派生于null,ECMAScript标准规定二者进行相等行测试时返回true;
举个例子:

[] == false 
=> [].valueOf() == false 
=> [].toString() == false 
=> "" == false 
=> true


{} == false 
=> {}.valueOf() == false
=> {}.toString() == false 
=> "[object object]" == false 
=> false

另:
===等号比较时其实就是不进行类型转换,即通常我们所理解的类型也会进行比较


本文来自 常驻客 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/local_people/article/details/71358194?utm_source=copy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容