Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Строковые операторы\оператор сравнения (https://javascript.ru/forum/misc/4284-strokovye-operatory%5Coperator-sravneniya.html)

zorro 09.07.2009 03:12

Строковые операторы\оператор сравнения
 
"11" < "3" // Строковое сравнение. Результат равен true.
Не могу понять почему так. Объясните пожалуйста. Спасибо.

Riim 09.07.2009 06:12

Если один из сравниваемых - число, то делается попытка второго сделать так же числом. Если две строки, то начинается посимвольное сравнение (используются коды символов). Где то на этом сайте было очень четко расписано, что и как сравнивается. Может найдется здесь: http://javascript.ru/ecma

zorro 09.07.2009 07:28

Собственно с остальными сравнениями разных типов понятно, а тут хоть убей не понимаю. :( ведь даже если я напишу "11111111" < "3" //результат будет true
Совсем видно зеленый и не могу въехать почему так. Или это особенность оператора <, что в результате сравнивания двух строк будет всегда true?
Здесь тоже самое написоно что и вы сказали, но я значит не понимаю как все таки этот оператор со стороками работает.

Используются коды символов - если я правильно понимаю, то вот допустим что код для 1 будет \uxxx, значит для 11 - \uxxx\uxxx.
Для тройки \uyxx.

Значит при сравнении тройка все равно будет меньше чем 11 или 11111 и так далее? Проясните пожалуйста, если представляете о чем я спрашиваю. Я правда хочу разобраться!

Riim 09.07.2009 08:04

Посимвольное сравнение - т. е. берем первые символы сравниваемых строк, сравниваем их коды, если равны то следующие, вторые, символы, как только не равны, то больше тот, у кого код больше. При сравнении "11" < "3" сравниваются "1" и "3", их коды 49 и 51.

Kolyaj 09.07.2009 09:55

Строки сравниваются лексикографически, по алфавиту т.е. (ну почти).

B~Vladi 09.07.2009 10:23

Цитата:

Сообщение от Kolyaj
Строки сравниваются лексикографически, по алфавиту т.е. (ну почти).

Цитата:

Сообщение от Riim
Посимвольное сравнение - т. е. берем первые символы сравниваемых строк, сравниваем их коды

Разве это не одно и тоже?!

Kolyaj 09.07.2009 11:19

Ну кто-то должен был написать слово "лексикографически" :) То же самое, да.

B~Vladi 09.07.2009 11:23

Цитата:

Сообщение от Kolyaj
Ну кто-то должен был написать слово "лексикографически"

:D
Нет, просто обязан...

zorro 10.07.2009 09:01

Мда, ну вот теперь славо богу дошло :)
Спасибо!


Часовой пояс GMT +3, время: 00:55.