我有以下脚本
document.write("12" < "2");
返回true。有什么理由吗?文档说javascript在数字上比较字符串但是,我不知道“12”是如何小于“2”。
答案 0 :(得分:10)
JavaScript逐个字符地比较字符串,直到其中一个字符不同。
1小于2,因此在第一个字符后停止比较。
答案 1 :(得分:4)
我相信它正在进行字典比较 - 字符串1中的第一个字符是'1',它小于字符串2的第一个字符,即'2'。有关词典顺序的更多信息,请访问:http://en.wikipedia.org/wiki/Lexicographical_order
答案 2 :(得分:3)
这是因为"12"
的第一个字符是1
,它出现在"2"
之前;和JavaScript字符串比较是词法/字母顺序,而不是数字。虽然它看起来是部分数字,但由于1
在2
之前排序。
但是,您可以简单地将数字作为数字进行比较:
document.write(parseFloat("12") < parseFloat("2"));
答案 3 :(得分:-2)
尝试:
document.write(parseInt("12") < parseInt("2"));