2011-11-18 69 views
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如何处理数字比较默认情况下的数字字符串。Javascript数值比较运算符如何处理字符串?

回答

4

JavaScript比较字符串的字符值,字符串是否看起来像数字或不。

可以在spec看到这一点,部分11.8.5,点4

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

+0

谢谢!那点4(a)字符串比较前缀标准也很有趣。 – Wick

+0

好吧我仍然错过了一些东西 - 我理解你上面的例子,但是我不明白“5000”的字符值不低于“35000”的字符值。你能通过我的具体例子来计算角色值的计算方法吗? – Wick

+1

@Wick:'“5”'超过'“3”'。这是纯粹的基于字符的比较。 – SLaks