JS中不同类型作比较的规律 (比较运算符)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wulove52/article/details/84972152

JS 不同数据类型的比较 是个头疼事情,那有没有规律可循,让记忆和理解起来更加容易呢,

console.log(1 ==  "1") //true

 好的,我先把规则告诉大家,然后大家理解后再开始练习。看看效果是不是很显著;

不同数据类型间的比较,规律如下
类型 类型 其他说明 其他说明
对象 对象 比较是不是同一个内存地址  
对象 字符串 对象先转为字符串,在和字符串进行比较  
对象 布尔类型

两边都要先转为数值

false 是  0,true 是 1

对象类型先隐式调用toString()方法,然后在Number()

 
对象 数字

对象要转为数字,在进行比较(对象先隐式调用toString()方法转为字符串,然后在把字符串

转为数字使用Number()方法)

 
数字 布尔 布尔转成数字(false 是  0,true 是 1),在和数字进行比较  
数字 字符串 字符串转成数字使用Number()方法,在和数字进行比较  
布尔 数字/字符串 都转成数字在进行比较  
null  undefined true  
null/undefined 其他类型 结果都是false   
NaN NaN false  

自身做布尔运算的时候

之前文章说过,除了 "" 0 NaN null undefined false 为false, 其他都为true

    //先执行![] 转成布尔 false 然后就变成了 布尔和对象比较 都转成数值 
    //false --> 0 [] -> '' -> 0  
    console.log(![] == [])// true

    //地址空间比较 肯定不相等
    console.log([]==[])// false

    //![] 先转成false 
    console.log(![]==false);//true
    //对象和字符串比较 对象转字符串 "[object Object]"
    console.log({a:1}=="[object Object]")// true

    //字符串转成数字(调用Number()) NaN 
    console.log("12px" == 12); //false

 这里有条新的规则:切记! 切记!切记!

 ! : 会先把后面的值进行去布尔,然后再取反,最后比较

猜你喜欢

转载自blog.csdn.net/wulove52/article/details/84972152
今日推荐