为什么0 == null 返会的是false?

0 >= null 返会的是true,而0 == null 返会的是false?

阅读 4.9k
6 个回答

比较过程,比较0<null,返回false,然后这个表达式就返回true。是不是有点坑!

js 比较运算符的算法,除了相等运算符号(==)和严格相等运算符(===),js 的比较运算符的规则:

1、如果两个运算子都是字符串,则按照字典顺序比较

2、否则,将两个运算子都转成数值,再进行比较

而 js 的 null、undefined 与其他类型的值进行 == 比较时,结果都为 false;null == undefined 结果为 true

相等运算符隐藏的类型转换,会带来一些违反直觉的结果。所以请尽量使用 ===

这里有一个隐式转换的过程:

  • 0 >= null, null转为0

  • 0 == null, null不会转换

别问我为什么, 这就是规则.

第一个数据转换,很容易得到答案
第二个null是特殊情况(null没有valueOf, toString等方法),它不能转换成其他值(具体见js 高程),无法与0比较,所以返回false,不过可以用Number(null)转换,这样才可以返回true

谢邀。看了所有答案,觉得一楼最为合理。虽然不知道对不对,但是我无言以对。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题