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

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

4

6 回答 6

52

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

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

如果我们使用字母,那么,因为b不小于aabc不小于aaa,但是因为c小于dabc所以小于abd

> 'abc' < 'aaa'
false
> 'abc' < 'abd'
true

您可以将字符串显式转换为数字:

> +'11' < '3'
false
于 2012-06-02T14:30:15.760 回答
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
于 2012-06-02T14:37:08.863 回答
4

在许多编程语言中,字符串按字典顺序进行比较。你可以检查字母顺序

于 2012-06-02T14:38:55.743 回答
3

它按每个字符进行比较,以下将是false

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

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

if ('1' < '3') alert('true'); // true
于 2012-06-02T14:30:57.717 回答
2

'1' < '3'并且因为第一个字符是“最重要的字符”(并不是说这个术语有任何意义)。将不再比较任何以下字符。

于 2012-06-02T14:30:56.887 回答
0

它已被视为字符串比较。所以 1 < 3 (两个字符串的第一个字符)然后字符串 11 在字符串 3 之前

于 2012-06-02T14:40:18.083 回答