if ('11' < '3') alert('true');
很明显,它不是按长度比较它们而是通过编码来比较它们。但是,我不明白它是如何工作的。我需要一些解释: - )
答案 0 :(得分:42)
字符串逐个字符进行比较,直到它们不相等或没有任何字符可供比较。 '11'的第一个字符小于'3'的第一个字符。
> '11' < '3'
true
> '31' < '3'
false
> '31' < '32'
true
> '31' < '30'
false
如果我们之后使用字母,由于b
不小于a
,abc
不小于aaa
,但由于c
小于d
abc
,abd
小于> '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