今天在我的JS代码中工作时,我发现了以下情况,无法解释自己应该正确的输出是什么?
'sachin' > 2 // False
'sachin' < 2 // False
'sachin' == 2 // False
我希望<
或>
的结果都是真的。我错过了什么?
答案 0 :(得分:2)
当运行时尝试将'sachin'
转换为数字时,它将失败并最终为NaN
。对于与任何其他数值的任何比较,该特殊常量会导致false
。 NaN
常量(“非数字”)不等于任何其他值,也不小于或大于任何其他值。
编辑 - ==
,<
和>
运算符将所有“首选”数字转换为字符串。如果一个操作数是一个数字而另一个是一个字符串,它们将始终尝试将该字符串解释为数字。操作数出现的顺序无关紧要;重要的是操作数类型。
(严格来说,根据规范,当<
涉及时>
和NaN
的结果应该是undefined
,但Firefox似乎会给{ {1}}而是。)