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

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

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

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

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

两边都要先转为数值

false 是  0,true 是 1

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

 
对象数字

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

自身做布尔运算的时候

之前文章说过,除了 "" 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

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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值