JavaScript-为什么”null>=0″为true,但是”null==0″为false?

JavaScript-为什么”null>=0″为true,但是”null==0″为false?

瑾兮 发布于 2017-09-01 字数 129 浏览 1143 回复 3

如题,效果如下:

alert(null >= 0);//true
alert(null == 0);//false

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

想挽留 2017-10-28 3 楼

给你一个参考表格:

== 0 '0' [0] [] {} '' null [null] undefined NaN [NaN] 'a' Infinity 1 '1' 1
0 true true true true false true false true false false false false false false false false
'0' true true true false false false false false false false false false false false false false
[0] true true false false false false false false false false false false false false false false
[] true false false false false true false false false false false false false false false false
{} false false false false false false false false false false false false false false false false
'' true false false true false true false true false false false false false false false false
null false false false false false false true false true false false false false false false false
[null] true false false false false true false false false false false false false false false false
undefined false false false false false false true false true false false false false false false false
NaN false false false false false false false false false false false false false false false false
[NaN] false false false false false false false false false false false false false false false false
'a' false false false false false false false false false false false true false false false false
Infinity false false false false false false false false false false false false true false false false
1 false false false false false false false false false false false false false true true true
'1' false false false false false false false false false false false false false true true true
1 false false false false false false false false false false false false false true true false

格式不太好看,调了半天也不行。请移步到:
http://www.cnblogs.com/jiji262/archive/2012/06/02/2531997.html

瑾兮 2017-10-09 2 楼

推荐看一下这里,英文不好不翻译误导大家了。
http://stackoverflow.com/questions/2910495/why-null-0-but-not-null-0

瑾兮 2017-09-11 1 楼

">="时应该是强转为数字类型了
"=="时则是特殊处理,不会转为数字类型

补充:
在进行null>=0比较时,它是通过比较null<0得到的答案,如果a<b为true,则a>=b 为false,如果a<b为false,则a>=b 为true。针对这个,在进行null<0比较时,null转化为0,0<0为假,所以null<0为false,那么null>=0为true。参考:http://bclary.com/2004/11/07/#a-11.8.4
== 比较时,null不会转化为数值,但如果左面是字符串右面是数值就会被转化。参考:http://bclary.com/2004/11/07/#a-11.9.3
对于typeof null=object与第21条规则冲突的地方,还需要接着调查。