为什么字符串“11”小于字符串“3”?

时间:2012-06-02 14:28:01

标签: javascript string comparison

if ('11' < '3') alert('true');

很明显,它不是按长度比较它们而是通过编码来比较它们。但是,我不明白它是如何工作的。我需要一些解释: - )

6 个答案:

答案 0 :(得分:42)

字符串逐个字符进行比较,直到它们不相等或没有任何字符可供比较。 '11'的第一个字符小于'3'的第一个字符。

> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false

如果我们之后使用字母,由于b不小于aabc不小于aaa,但由于c小于d abcabd小于> 'abc' < 'aaa' false > 'abc' < 'abd' true

{{1}}

答案 1 :(得分:4)

默认情况下,JavaScript会按每个字符的序数值比较两个字符串;很像strcmp()在C中的作用。

为了使您的比较有效,您可以将任意一侧转换为数字,以告诉翻译您的数字比较意图:

Number('11') < '3' // false
+'11' < '3' // false, using + to coerce '11' to a numeric

'11' < Number('3') // false
'11' < +'3' // false

答案 2 :(得分:4)

在许多编程语言中,字符串被比较为lexicographically。您可以查看Alphabetical order

答案 3 :(得分:3)

按每个字符进行比较,以下内容为false

if ('41' < '3') alert('true');

由于4不小于3。所以基本上你的比较归结为:

if ('1' < '3') alert('true'); // true

答案 4 :(得分:2)

'1' < '3'因为第一个角色是“最重要的角色”(并不是说这个词有意义)。以下任何字符都不会被比较。

答案 5 :(得分:0)

它被视为字符串比较。所以1&lt; 3(两个字符串的第一个字符串)然后字符串11继续字符串3