Строковые операторы\оператор сравнения
"11" < "3" // Строковое сравнение. Результат равен true.
Не могу понять почему так. Объясните пожалуйста. Спасибо. |
Если один из сравниваемых - число, то делается попытка второго сделать так же числом. Если две строки, то начинается посимвольное сравнение (используются коды символов). Где то на этом сайте было очень четко расписано, что и как сравнивается. Может найдется здесь: http://javascript.ru/ecma
|
Собственно с остальными сравнениями разных типов понятно, а тут хоть убей не понимаю. :( ведь даже если я напишу "11111111" < "3" //результат будет true
Совсем видно зеленый и не могу въехать почему так. Или это особенность оператора <, что в результате сравнивания двух строк будет всегда true? Здесь тоже самое написоно что и вы сказали, но я значит не понимаю как все таки этот оператор со стороками работает. Используются коды символов - если я правильно понимаю, то вот допустим что код для 1 будет \uxxx, значит для 11 - \uxxx\uxxx. Для тройки \uyxx. Значит при сравнении тройка все равно будет меньше чем 11 или 11111 и так далее? Проясните пожалуйста, если представляете о чем я спрашиваю. Я правда хочу разобраться! |
Посимвольное сравнение - т. е. берем первые символы сравниваемых строк, сравниваем их коды, если равны то следующие, вторые, символы, как только не равны, то больше тот, у кого код больше. При сравнении "11" < "3" сравниваются "1" и "3", их коды 49 и 51.
|
Строки сравниваются лексикографически, по алфавиту т.е. (ну почти).
|
Цитата:
Цитата:
|
Ну кто-то должен был написать слово "лексикографически" :) То же самое, да.
|
Цитата:
Нет, просто обязан... |
Мда, ну вот теперь славо богу дошло :)
Спасибо! |
Часовой пояс GMT +3, время: 08:07. |