4

我有以下脚本

document.write("12" < "2");

返回true。有什么理由吗?该文档说javascript以数字方式比较字符串,但是我看不出“12”如何小于“2”。

4

4 回答 4

10

JavaScript 逐个字符地比较字符串,直到其中一个字符不同。

1 小于 2,因此它在第一个字符之后停止比较。

于 2013-06-05T22:40:05.713 回答
5

我相信它正在进行字典比较——字符串一中的第一个字符是“1”,它小于字符串二的第一个字符,即“2”。更多关于字典顺序的信息:http ://en.wikipedia.org/wiki/Lexicographical_order

于 2013-06-05T22:42:23.923 回答
3

这是因为 is 的第一个字符"12"在;1之前"2"。JavaScript 字符串比较是按词法/字母顺序进行的,而不是按数字进行的。虽然它看起来部分是数字,但因为1它排在2.

但是,您可以简单地将数字作为 numbers进行比较:

document.write(parseFloat("12") < parseFloat("2"));
于 2013-06-05T22:40:21.793 回答
-2

尝试:

document.write(parseInt("12") < parseInt("2"));
于 2013-06-05T22:41:12.293 回答