Почему строка "11" меньше строки "3"?
if ('11' < '3') alert('true');
Очевидно, что он не сравнивает их по длине, а вместо этого кодирует. Однако я не понимаю, как это работает. Мне нужно некоторое объяснение: -)
Ответы
Ответ 1
Строки сравниваются по символам до тех пор, пока они не будут равны, или нет каких-либо символов, которые можно сравнить. Первый символ "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
Ответ 2
Во многих языках программирования Строки сравниваются как лексикографически. Вы можете проверить Алфавитный порядок
Ответ 3
Он сравнивается по каждому символу, будет false
:
if ('41' < '3') alert('true');
Так как 4
не меньше 3
. Таким образом, ваше сравнение сводилось к следующему:
if ('1' < '3') alert('true'); // true
Ответ 4
'1' < '3'
, и поскольку первый символ является "самым значимым символом" (не означает, что этот термин имеет смысл). Любые последующие символы больше не будут сравниваться.
Ответ 5
По умолчанию JavaScript будет сравнивать две строки по каждому порядковому значению символа; очень похоже на то, как strcmp()
работает в C.
Чтобы сделать вашу работу сравнения, вы можете отбросить любую сторону к числу, чтобы сообщить интерпретатору ваши намерения численного сравнения:
Number('11') < '3' // false
+'11' < '3' // false, using + to coerce '11' to a numeric
'11' < Number('3') // false
'11' < +'3' // false
Ответ 6
Он рассматривался как сравнение строк. Таким образом, 1 < 3 (1-й символ двух строк), тогда строка 11 предшествует строке 3