当前位置:Gxlcms > JavaScript > javascript中,关于null是不是等于0问题的探讨

javascript中,关于null是不是等于0问题的探讨

时间:2021-07-01 10:21:17 帮助过:8人阅读

看见朋友们在讨论一个问题,说 null 到底和 0 是不是相等的。

听到这里,去写个 Demo 试一下。

为什么 console.log(null <= 0); 和 console.log(null >= 0); 这两条的判断是 true 呢?

首先我们来看一下 ES3 关于 内部相等性运算的算法实现。

接下来我们再来看一下 ES3 关于 内部关系运算的算法实现。

ES3 的 “>” 运算符:

ES3 的”>=” 运算符:

ES3 的 “==” 运算符 :

根据资料得出的内容

  1. 关系运算符 和 相等运算符 并不是一个类别的.

  2. 关系运算符,在设计上,总是需要运算元尝试转为一个number . 而相等运算符在设计上,则没有这方面的考虑.

  3. 最重要的一点, 不要把 拿 a > b , a == b 的结果 想当然的去和 a >= b 建立联系. 正确的符合最初设计思想的关系是 a > b 与 a >= b是一组 . a == b 和其他相等运算符才是一组. 比如 a === b , a != b, a !== b .

那么我们就可以反过来看这个问题了。

结果为 false, null >= 0 // null 尝试转为number ,则为0 , 结果为 true. null == 0 // null在设计上,在此处不尝试转型. 所以 结果为false.

a >= b 运算符只是简单的去对 a < b的结果取反. 我以为这是一个设计上的失误的另一个理由是 undefined,在标准中,被单拎出来.细心的你,也一定发现了这一点. 对于undefined的设计, undefined > 0 , undefined < 0, undefined == 0 的结果是符合设计上,逻辑的一致性的. 而null是被遗漏的东西.直到今天早上.重新翻阅了ES3,5.相关章节. 才恍然大悟自己没有从根本上理解到这个问题.

另外一个例子

以上就是javascript中,关于null是不是等于0问题的探讨的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行