Javascript 数值比较运算符究竟是如何处理字符串的?
Posted
技术标签:
【中文标题】Javascript 数值比较运算符究竟是如何处理字符串的?【英文标题】:how exactly do Javascript numeric comparison operators handle strings? 【发布时间】:2011-12-31 21:52:02 【问题描述】: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】:Javascript 按字符值比较字符串,无论字符串看起来是否像数字。
您可以在spec,第 11.8.5 节,第 4 点中看到这一点。
'a' < 'b'
和 'ab' < 'ac
都是真的。
【讨论】:
谢谢!这点 4(a) 字符串比较前缀标准也很有趣。 好吧,我还是遗漏了一些东西——我理解你上面的例子,但我不明白“5000”的字符值如何不小于“35000”的字符值。你能告诉我如何为我的具体示例计算字符值吗? @Wick:"5"
比 "3"
多。这是一个纯粹基于字符的比较。
规范链接现在似乎有一些新内容(毒瘾的艺术疗法)。以上是关于Javascript 数值比较运算符究竟是如何处理字符串的?的主要内容,如果未能解决你的问题,请参考以下文章
Spring BeanPostProcessor 究竟是如何工作的?