В предыдущем уроке были рассмотрены основные операторы JavaScript - это арифметические, строковые, побитовые, а также операторы присваивания и перечисления. В этой же статье вас ждет продолжение изучения операторов, а именно будут рассмотрены операторы сравнения, условные и логические операторы. Эти операторы являются важными составляющими при составлении различного по сложности кода JavaScript.
Операторы сравнения
Предназначены для сравнения двух значений, которые могут быть как числовыми, так и строковыми. Результат будет возвращен в виде специальных логических значений - true (истина) или false (ложь). То есть сравнивая между собой некие значения, результат будет показывать верно или неверно.
Например:
alert(22 > 5); // true (верно)
alert(15 == 11); // false (неверно)
С числовым сравнением всё ясно из школьной программы, а как быть со строковым сравнением. Разберем пример:
alert( 'Первый' > 'Второй' ); // true
В данном случае слово Первый больше, чем Второй. Суть строкового сравнения в том, что оно происходит в алфавитном порядке. То есть, чем буква позже, тем она старше, если первые буквы одинаковые, то сравнение идет по второй букве и т.д.
alert( 'Работать' > 'Раб' ); // true , т.к. оставшиеся буквы больше, чем ничего
Если в строках записаны числа, то результат может быть таким:
alert( '490' > '53' ); // false
Выражение в данном случае неверно, потому что сравнивание между строковыми числами происходить так же, как и с буквами - чем старше первая цифра, тем больше. Поэтому, чтобы сравнить именно числа, нужно немного изменить функцию:
alert( +'490' > +'53' ); // true
Существуют следующие основные операторы сравнения:
- Равно (==) - результат true, если значения равны
- Не равно (!=) - возвращает true, если значения не равны
- Больше (>) - получим true, если левое значение больше, чем правое
- Больше или равно (>=) - будет true, если левое значение больше или равно правому
- Меньше (<) - возвращает true, если левое меньше, чем правое значение
- Меньше или равно (< =) - получим true, если слева меньше или равно, тому что справа
Примечание: сравнение со специальными значениями null и undefined обычно не используется, т.к. можно получить неверный результат.
Условные операторы
Оператор IF
Достаточно распространенный условный оператор, который означает "если".
Например:
if (year != 1991)
alert('Неправильно! В 1991 году!');
Если оператор IF включает в себя несколько функций, то все условия должны быть занесены в фигурные скобки:
alert('Неправильно... В 1991 году!');
alert('Надо знать такие даты!'); }
Если оператор if имеет значение 0 или indefined, то результат будет false.
Оператор ELSE
Этот оператор используется в связке с предыдущим, и обозначает "иначе". То есть, если по первому условию показан один результат (true), то иначе при неверности условия будет показан другой результат.
Например:
if (year != 1991) {
alert ('В 1991 году! Надо знать такие даты...');}
else { alert ('Правильно! Да вы знаток!'); }
Если нужно выполнить несколько условий, то применяют блок ELSE IF:
if (year == 1991) {alert ('Правильно');}
else if (year != 1991) { alert ('Неугадал');
var year = prompt ('Попробуй снова','');}
if (year == 1991) {alert ('Так бы и сразу');}
else {alert ('Надо знать такие даты... В 1991'); }
Таким образом, такой блок задает дополнительное вычисление условий до последнего ELSE.
Логические операторы
Предназначены для обработки нескольких условий одновременно. В JavaScript логические операторы применяются к значениям любого типа и также возвращают значения любого типа.
Оператор ИЛИ ( || )
Суть работы оператора заключается, в том, что если хотя бы одно из значений true, то возвращается результат - true. Т.е. true||true -> true, true||false -> true, false||false -> false.
Например:
var year = prompt ('Сколько тебе лет?');
if (year < 18 || year >= 50) {
alert('Ты ещё не совершеннолетний или слишком взрослый'); }
Если введенное значение будет соответствовать одному из условий, то результат будет показан командой alert. В случае не соответствия сравнениям, сообщение alert показано не будет.
Значений с ИЛИ может быть больше двух:
year < 18 || year > 50 || year != 25.
Все положительные (отрицательные) значения - это true, а неверными значениями false являются - 0 и indefined. Значения обрабатываются слева-направо, следовательно, когда найден результат true, то следующее значение обрабатываться не будет:
var z = 0; // 0 это false
var w = 100500;
var otvet = x || y || z || w || 0;
alert(otvet); // ответом будет значение true - 100500
Итак, в этом операторе, при нахождении слева-направо первого верного значения (true), будет результатом.
Оператор И (&&)
В отличие от предыдущего оператора, здесь единственно верное значение будет в том случае, если оба они true, иначе false: true&&true -> true, true&&false -> false, false&&false -> false. Если первое значение false, то вычисление заканчивается и возвращается это значение. Если значение true, то возвращается следующее после него значение.
Пример
alert(false&&50); // будет false, т.к. вычисление заканчивается
alert(true&&50); // будет 50, т.к. возвращается следующее значение
Если стоят два оператора, то оператор И вычисляется раньше, чем ИЛИ.
alert(12 || 15 && 0); // 12
Ответом будет 12, т.к. между 15 и 0 выбирается 2-е значение, а затем между 12 и 0 выбирается значение true.
Оператор НЕ (!)
Простой оператор, который "отрицает" выводимое значение. То есть если было true, то станет false и наоборот.
Пример
alert( !true ) // false
Также может использоваться двойной НЕ (!!), если требуется преобразование в логический тип:
alert( !!"текст" ) // true
alert( !!null ) // false
Задачка. Попробуйте составить пример, в котором спрашивается зарплата посетителя. Если она меньше 1000, то посетитель получит одно сообщение, иначе, если больше 5000, посетитель получит другое сообщение.