进行关系比较的时候,隐式转换是一起转换为数字类型,还是布尔类型?

进行关系比较的时候,隐式转换是一起转换为数字类型,还是布尔类型?

进行关系比较的时候,隐式转换是一起转换为数字类型,还是布尔类型?


0==undefined // false, 我可以理解成Number(undefined) 返回NaN,所以不相等

0==null //false,不理解;因为我觉得Number(null) 返回的也是0,所以应该怎么理解这个现象呢》?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小李 2023-01-07 17:43:31

同学你好,解答如下:

1、在js中隐式类型转换遵循的规则如下:

  1)对象和布尔值进行比较时,对象先转换为字符串,然后再转换为数字,布尔值直接转换为数字。

     2)对象和字符串进行比较时,对象转换为字符串,然后两者进行比较。

     3)  对象和数字比较时,对象先转换为字符串,然后转换为数字,再和数字比较。

     4)  字符串和数字进行比较时,字符串转换成数字比较。

     5)  字符串和布尔值进行比较时,二者全部转换成数值再比较。

     6)  布尔值和数字进行比较时,布尔转换为数字,二者比较。


2、null==0 //false (它是一个特殊的存在,相关文献中有记录和推算方式,有兴趣可以看看)


https://es6.ruanyifeng.com/search=%E9%80%97%E5%8F%B7&x=4&y=9#docs/spec#%E7%9B%B8%E7%AD%89%E8%BF%90%E7%AE%97%E7%AC%A6 


     当null在做相等判断时,不进行转型,所以导致null和0为不同类型数据,结果为false。这里记住即可。


祝学习愉快!

  • 1、在js中隐式类型转换遵循的规则如下:

      1)对象和布尔值进行比较时,对象先转换为字符串,然后在转换为数字,布尔值直接转换为数字。

         2)对象和字符串进行比较时,对象转换为字符串,然后两者在进行比较。

         3)  对象和数字比较时,对象先转换为字符串,然后转换为数字,再和数字比较。

         4)  字符串和数字进行比较时,字符串转换成数字在比较。

         5)  字符串和布尔值进行比较时,二者全部转换成数值再比较。

         6)  布尔值和数字进行比较时,布尔转换为数字,二者比较。

    这个规则这么复杂,要记住吗?都要被绕晕了

    2023-01-07 17:49:27
  • 这个规则如果能记住当然是好的,不过记不住也没事它有概率会在面试的时候会出现(因为是js基础可能会被考察)那么同学面试前准备一下即可。并且如果日后开发中出现了问题或者同学拿不准的时候直接去搜索引擎上搜一下即可。

    2023-01-07 17:55:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师