br 8eb34


search

Продолжение изучения операторов

java_operВ предыдущем уроке были рассмотрены основные операторы JavaScript - это арифметические, строковые, побитовые, а также операторы присваивания и перечисления. В этой же статье вас ждет продолжение изучения операторов, а именно будут рассмотрены операторы сравнения, условные и логические операторы. Эти операторы являются важными составляющими при составлении различного по сложности кода JavaScript.

Операторы сравнения

Предназначены для сравнения двух значений, которые могут быть как числовыми, так и строковыми. Результат будет возвращен в виде специальных логических значений - true (истина) или false (ложь). То есть сравнивая между собой некие значения, результат будет показывать верно или неверно.

java_oper1Например:

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

Достаточно распространенный условный оператор, который означает "если".

Например:

var year = prompt('Когда распался Советский союз?', '');
if (year != 1991)
alert('Неправильно! В 1991 году!');

Если оператор IF включает в себя несколько функций, то все условия должны быть занесены в фигурные скобки:

if (year != 1991) {
alert('Неправильно... В 1991 году!');
alert('Надо знать такие даты!'); }

if_else

Если оператор if имеет значение 0 или indefined, то результат будет  false.

Оператор ELSE

Этот оператор используется в связке с предыдущим, и обозначает "иначе". То есть, если по первому условию показан один результат (true), то иначе при неверности условия будет показан другой результат.

Например:

var year = prompt('Когда распался Советский союз?', '');
if (year != 1991) {
alert ('В 1991 году! Надо знать такие даты...');}
else { alert ('Правильно! Да вы знаток!'); }

Если нужно выполнить несколько условий, то применяют блок ELSE IF:

var year = prompt('Когда распался Советский союз?', '');
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.

java_logНапример:

var year = prompt ('Сколько тебе лет?');

if (year < 18 || year >= 50) {

alert('Ты ещё не совершеннолетний или слишком взрослый'); }

Если введенное значение будет соответствовать одному из условий, то результат будет показан командой alert. В случае не соответствия сравнениям, сообщение alert показано не будет.

Значений с ИЛИ может быть больше двух:

year < 18 || year > 50 || year != 25.

Все положительные (отрицательные) значения - это true, а неверными значениями false являются - 0 и indefined. Значения обрабатываются слева-направо, следовательно, когда найден результат true, то следующее значение обрабатываться не будет:

var x, y; // переменные не присвоены
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, то возвращается следующее после него значение.

java_log2Пример

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, посетитель получит другое сообщение.

Комментарии