我们知道在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
网友评论