写点什么

JavaScript 中为什么“null==0“为 false?? “null>=0“为 true???

  • 2022 年 7 月 24 日
  • 本文字数:692 字

    阅读完需:约 2 分钟

前言

今天来谈一个在 javaScript 中很有意思的现象,就是JavaScript中为什么"null==0"为false而"null>=0"为true的现象


众所周知,在 JavaScript 中,==表示等于,它判断值相等之后,并不再判断类型。即使值不同,但是转换后的类型相等也会判定为相等。进行一个隐式类型转换,然后才比较,比如1=='1'1==true0==false等就是正确的。


===表示全等于,它不仅仅判断值是否相等,还会判断类型是否相等,并且它不会进行隐式类型转换,比如1==='1'1===true0===false等就是错误的。


但是按这个思路来说,null 和 0 应该是相等的才对,为什么会出现null>=0true的情况呢?

分析

让我们针对以下三种情况来分析一下就豁然开朗啦!


null > 0


对比大于或小于的时候,null 会尝试转型为 number , 转化之后 null 为 0, 而 0>0 很明显是错误的,所以结果为 false。


null >= 0


同上,对比 大于等于 或 小于等于 的时候, 会先判断大于或小于, 这时候 null 会尝试转型为 number , 转化之后 null 为 0, 0>0 是错误的,但是 0=0 是正确的, 这是 "或" 的判断, 所以结果为 true。


null == 0


相等运算符在设计上,对比等于的时候并不会尝试转型,null 不会转换为 0,同样的,0 也不会转为 null。null 和 0 不转型的话,是不会相等的, 所以 null == 0 结果为 false。


知识点(划重点)


  1. 关系运算符 和 相等运算符 并不是相同类别的,它们有着完全不同的运算逻辑。

  2. 关系运算符,在设计上总是需要运算元素先尝试转为一个 number,而相等运算符在设计上,则不会有这方面的考虑,主要是值是否相等。

后记

你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。


关注我,前端路途一起走。嘿哈~😛

发布于: 1 小时前阅读数: 5
用户头像

还未添加个人签名 2022.07.01 加入

还未添加个人简介

评论

发布
暂无评论
JavaScript中为什么“null==0“为false??  “null>=0“为true???_7月月更_南极一块修炼千年的大冰块_InfoQ写作社区