Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работы по JavaScript.docx
Скачиваний:
16
Добавлен:
11.02.2015
Размер:
635 Кб
Скачать

Операторы сравнения и логические значения

  1. Логические значения

  2. Сравнение строк

  3. Сравнение разных типов

  4. Строгое равенство

  5. Сравнение с null и undefined

  6. Итого

В этом разделе мы познакомимся с операторами сравнения и с логическими значениями, которые такие операторы возвращают. Многие операторы сравнения знакомы нам со школы:

  • Больше/меньше: a > b, a < b.

  • Больше/меньше или равно: a >= b, a <= b.

  • Равно a == b. Для сравнения используется два символа равенства '='. Один символ a = b означал бы присваивание.

  • «Не равно». В школе он пишется как ≠, в JavaScript — знак равенства с восклицательным знаком перед ним !=.

Логические значения

Как и другие операторы, сравнение возвращает значение. Это значение имеет специальный логический тип.

Существует всего два логических значения:

  • true — имеет смысл «да», «верно», «истина».

  • false — означает «нет», «неверно», «ложь».

Например:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( 2 > 1 ); // true, верно

2

alert( 2 == 1 ); // false, неверно

3

alert( 2 != 1 ); // true

Логические значения можно использовать и напрямую, присваивать переменным, работать с ними как с любыми другими:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

var a = true; // присвоили явно

2

var b = 3 > 4; // false

3

  

4

alert( b ); // false

5

  

6

alert( a == b ); // (true == false) неверно, результат false

Сравнение строк

Строки сравниваются побуквенно:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( 'Б' > 'А' ); // true

Буквы сравниваются в алфавитном порядке. Какая буква в алфавите позже — та и больше.

Кодировка Unicode

Аналогом «алфавита» во внутреннем представлении строк служит кодировка, у каждого символа — свой номер (код). JavaScript использует кодировку Unicode. При этом сравниваются численные коды символов.

В кодировке Unicode обычно код у строчной буквы больше, чем у прописной, поэтому:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert('а' > 'Я'); // true, строчные буквы больше прописных

Для корректного сравнения символы должны быть в одинаковом регистре.

Сравнение осуществляется как в телефонной книжке или в словаре. Сначала сравниваются первые буквы, потом вторые, и так далее, пока одна не будет больше другой.

Иными словами, больше — та строка, которая в телефонной книге была бы на большей странице.

Например:

  • Если первая буква одной строки больше — значит первая строка больше, независимо от остальных символов:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( 'Банан' > 'Аят' );

  • Если одинаковы — сравнение идёт дальше. Здесь оно дойдёт до третьей буквы:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( 'Вася' > 'Ваня' ); // true, т.к. 'с' > 'н'

  • При этом любая буква больше отсутствия буквы:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( 'Привет' > 'Прив' ); // true, так как 'е' больше чем "ничего".

Такое сравнение называется лексикографическим.

Обычно мы получаем значения от посетителя в виде строк. Например, prompt возвращает строку, которую ввел посетитель.

Числа, полученные таким образом, в виде строк сравнивать нельзя, результат будет неверен. Например:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( "2" > "14" ); // true, неверно, ведь 2 не больше 14

В примере выше 2 оказалось больше 14, потому что строки сравниваются посимвольно, а первый символ '2' больше '1'.

Правильно было бы преобразовать их к числу явным образом. Например, поставив перед ними +:

показать чистый исходник в новом окнеСкрыть/показать номера строкпечать кода с сохранением подсветки

   

1

alert( +"2" > +"14" ); // false, теперь правильно