Javascript 两个变量不等于、不大于、不小于?

Javascript 两个变量不等于、不大于、不小于?,javascript,Javascript,我用javascript为我的数组编写了一个二进制搜索,并发现了比较两个变量的奇怪行为: $ node > a='10000@qq.com' '10000@qq.com' > b=100080 100080 > a==b false > a>b false > a<b false > typeof a 'string' > typeof b 'number' $node >a=10000@qq.com' '10000@qq.com' >

我用javascript为我的数组编写了一个二进制搜索,并发现了比较两个变量的奇怪行为:

$ node
> a='10000@qq.com'
'10000@qq.com'
> b=100080
100080

> a==b
false
> a>b
false
> a<b
false

> typeof a
'string'
> typeof b
'number'
$node
>a=10000@qq.com'
'10000@qq.com'
>b=100080
100080
>a==b
错误的
>a>b
错误的
>a型
“字符串”
>b型
“数字”
在这种情况下:a不等于ba不大于ba不小于b,我认为这不应该同时发生

这就是我的二进制搜索进入死亡循环的原因

在我将所有变量转换为字符串()之后,这个问题就消失了

我的问题是:这是怎么发生的?

利用

当给定一个数字和一个字符串(步骤6)时,该字符串将转换为一个数字。在本例中,由于
@qq.com
,这将导致
NaN

'10000@qq.com' < 100080         // initial
Number('10000@qq.com') < 100080 // step 6.a
NaN < 100080
利用

当给定一个数字和一个字符串(步骤6)时,该字符串将转换为一个数字。在本例中,由于
@qq.com
,这将导致
NaN

'10000@qq.com' < 100080         // initial
Number('10000@qq.com') < 100080 // step 6.a
NaN < 100080

在我将所有变量转换为string()之后,这个问题就消失了
-然后
利用。给定一个数字和一个字符串(步骤6),该字符串将被转换为一个数字。在这种情况下,这将导致
NaN
,这反过来会导致比较时回答
undefined
。@JonathanLonowski它应该是一个答案。
在我将所有变量转换为String()后,这个问题消失了
-这样做,然后
利用。给定一个数字和一个字符串(步骤6),该字符串将被转换为一个数字。在本例中,这将导致
NaN
,这反过来会导致在比较时回答
undefined
。@JonathanLonowski它应该是一个答案。