javascript中字符串与整数的比较

javascript中字符串与整数的比较,javascript,type-conversion,string-comparison,Javascript,Type Conversion,String Comparison,今天在我的JS代码中工作时,我发现了以下情况,并且无法解释自己正确的输出应该是什么 'sachin' > 2 // False 'sachin' < 2 // False 'sachin' == 2 // False 'sachin>2//False “sachin”

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

'sachin' > 2 // False

'sachin' < 2 // False

'sachin' == 2 // False
'sachin>2//False
“sachin”<2//False
'sachin'==2//False

我希望
中的任何一个的结果都应该是真的。我遗漏了什么?

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

编辑-与字符串相比,
==
运算符都“更喜欢”数字。如果一个操作数是数字,另一个是字符串,则它们总是试图将字符串解释为数字。操作数的显示顺序无关紧要;重要的是操作数类型


(严格地说,根据规范,
当涉及
NaN
时的结果应该是
未定义的
,但Firefox似乎给出了

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

编辑-与字符串相比,
==
运算符都“更喜欢”数字。如果一个操作数是数字,另一个是字符串,则它们总是试图将字符串解释为数字。操作数的显示顺序无关紧要;重要的是操作数类型


(严格地说,根据规范,
涉及
NaN
时的结果应该是
未定义的
,但Firefox似乎给出了
false
。)

你现在真的觉得这种比较有意义吗all@adeneo我知道这在代码中是没有意义的,但我想知道当浏览器遇到这样的语句时,它会做什么。这个比较对你们来说真的有意义吗all@adeneo我知道这在代码中是没有意义的,但我想了解浏览器在遇到问题时会做什么这样的语句。这是否意味着运行时试图将左运算符转换为右运算符的类型?@blunderboy否,它与所涉及的值的类型以及特定的运算符有关。我将扩展答案(一旦我仔细检查语言规范以确保我的记忆正常:)@blunderboy OK抱歉我更新了答案-我写的关于
==
的内容不正确;我想我在考虑
+
操作符。谢谢你的解释!!我会去读一些关于JS中类型转换的文章,让我更清楚。这是否意味着运行时会尝试将左操作符转换为右操作符的类型?@blunderboy不,这与所涉及的值的类型以及特定的操作符有关。我将扩展答案(一旦我仔细检查语言规范以确保我的记忆正常:)@blunderboy OK抱歉我更新了答案-我写的关于
==
的内容不正确;我想我在考虑
+
操作符。谢谢你的解释!!我会去读一些关于JS中类型转换的文章,让我更清楚。。