关于==的比较问题
说到==,首先要知道在不同类型进行==比较的时候会发生js的隐式类型转换(详情请自行了解)
这里就说一写不同类型进行==比较的时候会转换成什么类型
// 1 对象 == 字符串 对象.toString() 变为字符串
var obj = {};
console.log(obj.toString());//[object Object]
var str = "[object Object]";
console.log(obj == str);//true
// 2 null == undefined 相等 但是和其他值比较就不在相等了
var a =1,b="2",c=true;
console.log(null==undefined);//true
console.log(null==a);//false
console.log(null==b);//false
console.log(null==c);//false
// 3 NaN == NaN 不相等,NaN和什么都不相等
console.log(NaN==NaN);//false
console.log(NaN>1);//false
console.log(NaN<1);//false
console.log(NaN==1);//false
// 4 剩下的都转化为数字
console.log(1==true);//false
console.log(2==true);//false
console.log(3==function(){});//false
cosnole.log(function(){}==function(){});//false,不难看的function转换成了NaN
console.log(new Number(function () {}));