首页 > 开发 > JS > 正文

javascript:null>=0

2017-09-05 13:02:27  来源:网友分享

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

null==0 //falsenull>0 //falsenull<0 //falsenull>=0 //true

解决方案

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

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

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

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

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

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

0>=0//true

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