在javascript中比较字符串与整数

时间:2014-05-05 17:48:47

标签: javascript type-conversion string-comparison

今天在我的JS代码中工作时,我发现了以下情况,无法解释自己应该正确的输出是什么?

'sachin' > 2 // False

'sachin' < 2 // False

'sachin' == 2 // False

我希望<>的结果都是真的。我错过了什么?

1 个答案:

答案 0 :(得分:2)

当运行时尝试将'sachin'转换为数字时,它将失败并最终为NaN。对于与任何其他数值的任何比较,该特殊常量会导致falseNaN常量(“非数字”)不等于任何其他值,也不小于或大于任何其他值。

编辑 - ==<>运算符将所有“首选”数字转换为字符串。如果一个操作数是一个数字而另一个是一个字符串,它们将始终尝试将该字符串解释为数字。操作数出现的顺序无关紧要;重要的是操作数类型。

(严格来说,根据规范,当<涉及时>NaN的结果应该是undefined,但Firefox似乎会给{ {1}}而是。)