JavaScript 强制:控制台与脚本

JavaScript Coercion: Console vs Script

今天遇到了一件比较奇怪的事情。考虑以下代码(我用它来将范围滑块与输入元素同步):

// val = "50"
// other_val = 100  
if( val > other_val ){
    console.log(val + '>' + other_val); // => 50 > 100
    console.log( val > other_val); // => true
    $input_max.val( other_val );
}

这是怎么发生的?当我输入

"50" > 100 

进入我的控制台(Chrome & FireFox),它说 false,这是我所期望的。我用 parseInt() 修复了由此产生的错误,但我仍然不知道 为什么 会发生这种情况。另外,我不知道为什么我不能在这个脚本之外重现它。

有什么想法吗? :)

干杯!

更新:

正如 Bergi 指出的那样,它是 "50">"100",而不是 "50" > 100。非常感谢你的想法。现在,我真正的问题似乎是:

为什么 return 正确:

"50">"100" // => true

您编辑的问题的答案是,当您比较字符串时,它会从字符串的开头逐个字符地进行比较。并且字符 5 "larger" 比 1.