Очевидно, что он не сравнивает их по длине, а вместо этого кодирует. Однако я не понимаю, как это работает. Мне нужно некоторое объяснение: -)
Ответ 1
Строки сравниваются по символам до тех пор, пока они не будут равны, или нет каких-либо символов, которые можно сравнить. Первый символ "11" меньше первого символа "3".
Так как 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