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