javascript - Javascript 数字比较运算符究竟如何处理字符串?

标签 javascript string comparison operators numeric

var i = ['5000','35000'];
alert((i[0] < i[1])?'well duh!':'fuzzy math?');
alert((Number(i[0]) < Number(i[1]))?'well duh!':'fuzzy math?');

这里发生了什么?在第一个警报中,文本字符串“5000”的计算结果为小于“35000”。我假设 Javascript 在对字符串进行数字比较时使用了 Number(),但显然事实并非如此。只是好奇 Javascript 在默认情况下如何精确地处理数字字符串的比较。

最佳答案

Javascript 通过字符值比较字符串,无论字符串看起来像还是不像数字。

你可以在 spec 中看到这个, 第 11.8.5 节,第 4 点。

'a' < 'b''ab' < 'ac都是真的。

关于javascript - Javascript 数字比较运算符究竟如何处理字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177238/

相关文章:

javascript - 计算 jQuery 中选定选项的数量?

javascript - 我怎样才能使用顶部的按钮重新启动这个游戏?

java - 如何创建一个类的实例,并将字符串数组作为唯一的实例变量?

regex - 来自标准输出的ansible解析文本字符串

algorithm - 用整数表达对象关系的目的是什么?

algorithm - 符号比较

javascript - 如何将我的 JavaScript 数组导出到 IE11 上的 CSV 或 Excel 文件中?

javascript - 将具有字符串索引表示法的对象属性转换为点表示法

javascript - 使用 jquery/regex 替换子字符串中最后一个匹配的字符

C - 数组与 == 的比较有效,为什么?