JavaScript 数字比较运算符如何处理字符串?

3
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默认如何处理数字字符串的数值比较。
1个回答

4

Javascript通过字符值比较字符串,无论这些字符串是否像数字。

可以在规范第11.8.5节的第4点中看到这一点。

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


谢谢!那个4(a)点的字符串比较前缀标准也很有趣。 - Wick
好的,我还是有点不明白——我理解你上面的例子,但我不明白为什么字符值“5000”不小于字符值“35000”。你能给我演示一下如何计算我的具体示例中的字符值吗? - Wick
1
@Wick:"5""3"大。这是一种纯字符比较。 - SLaks
规格链接现在似乎有一些新内容(药物成瘾的艺术治疗)。 - Teemu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接