您好,匿名用户
随意问技术百科期待您的加入

javascript:null>=0

0 投票

今天在手机上看到的一个问题,为什么结果是这样?

null==0 //false
null>0 //false
null<0 //false
null>=0 //true
用户头像 提问 2012年 12月1日 @ Nocturne 上等兵 (262 威望)
分享到:

1个回答

0 投票
 
最佳答案

js是遵从ECMAScript规范的,出现上面问题的原因是因为关系运算符会胁迫类型转换。你可以从这里看到ECMA详细的类型转换算法细节,亲:http://bclary.com/2004/11/07/#a-11.9....

首先要明确一点,typeof(null)=='object'。然后问题分两部分回答吧,先说false的三个:

null==0 //false
null>0 //false
null<0 //false

在x与y之间使用= =时,会判断“如果x为object,y为字符串或数字”的情况,这时候会返回ToPrimitive(x) = =y,也就是ToPrimitive(null)==0,null会根据输入的参数0(Number)转换为原始值,这时候是null转化为undefined,>号与<号的转换情况也是一样的,因此出现了false。

undefined==0//false
undefined>0//false
undefined<0//false

true的情况则是null在>=时,通过GetBase和GetPropertyName转换为了0,因此

0>=0//true

这些东西其实挺纠结的说,还是得看ECMAScript的规则。

用户头像 回复 2012年 12月1日 @ Orianna 上等兵 (193 威望)
选中 2012年 12月1日 @Nocturne
提一个问题:

相关问题

0 投票
1 回复 35 阅读
用户头像 提问 2012年 12月1日 @ Rider 上等兵 (281 威望)
0 投票
1 回复 30 阅读
0 投票
0 回复 55 阅读
用户头像 提问 2013年 9月10日 @ Jayce 上等兵 (271 威望)
+1 投票
1 回复 30 阅读
用户头像 提问 2013年 9月10日 @ Usopp 上等兵 (128 威望)
0 投票
1 回复 46 阅读
用户头像 提问 2013年 9月23日 @ Evelynn 上等兵 (244 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...