Подтвердить что ты не робот

Почему строка "11" меньше строки "3"?

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

Очевидно, что он не сравнивает их по длине, а вместо этого кодирует. Однако я не понимаю, как это работает. Мне нужно некоторое объяснение: -)

4b9b3361

Ответ 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

Ответ 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