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

2018-09-26  本文已影响15人  乖乖果效36

我们知道在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

上一篇 下一篇

猜你喜欢

热点阅读