比较运算符 == 与 >、<、>=、<= 的转换规则并不完全一致

397 阅读1分钟

在 JavaScript中,当两个值在用比较运算符 ==><>=<= 比较大小时,会发生到数字类型的转换。

'2' > 1 // true。字符串 "2" 转换成了数字 2
'01' == 1 // true。字符串 "01" 转换成了数字 1

但有一点行为,== 与其它运算符表现的并不一致——在处理 undefinednull 时——== 运算符不会进行转换。

null >= 0 // true
null == 0 // false

在进行 >= 比较时,null 转成数字变成 0,所以 null >= 0 的结果是 true

对于比较 null == 0,因为 null 并不会发生转换,所以结果为 false

还有一点有趣的地方是:ECMAScript 规范中定义了 null == undefined 结果为 true,这并没有道理可寻,知道即可。

(完)