在 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,这并没有道理可寻,知道即可。
(完)