进行关系比较的时候,隐式转换是一起转换为数字类型,还是布尔类型?
进行关系比较的时候,隐式转换是一起转换为数字类型,还是布尔类型?
0==undefined // false, 我可以理解成Number(undefined) 返回NaN,所以不相等
0==null //false,不理解;因为我觉得Number(null) 返回的也是0,所以应该怎么理解这个现象呢》?
6
收起
正在回答 回答被采纳积分+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积分~
来为老师/同学的回答评分吧
0 星