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 は各文字の序数値で 2 つの文字列を比較します。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 (2 つの文字列の最初の文字) の場合、文字列 11 が文字列 3 に先行します。

于 2012-06-02T14:40:18.083 に答える