在 JavaScript中,当两个值在用比较运算符 ==
、>
、<
、>=
和 <=
比较大小时,会发生到数字类型的转换。
'2' > 1 // true。字符串 "2" 转换成了数字 2
'01' == 1 // true。字符串 "01" 转换成了数字 1
复制代码
但有一点行为,==
与其它运算符表现的并不一致——在处理 undefined
和 null
时——==
运算符不会进行转换。
null >= 0 // true
null == 0 // false
复制代码
在进行 >=
比较时,null
转成数字变成 0
,所以 null >= 0
的结果是 true
。
对于比较 null == 0
,因为 null
并不会发生转换,所以结果为 false
。
还有一点有趣的地方是:ECMAScript 规范中定义了
null == undefined
结果为true
,这并没有道理可寻,知道即可。
(完)