Яваскрипт если два условия выполняются вывести сообщение. Операторы if JavaScript. Условные операторы JavaScript

Урок №5
Операторы ветвления if в языке JavaScript

Операторы ветвления предназначены для того, чтобы программа могла запускать тот или иной блок кода, в зависимости от верности true или не верности false условия.

Операторов ветвления существует пять видов, в этом уроке мы рассмотрим два из них:
— оператор ветвления if
— оператор ветвления if else

Запускает код, если условие возвращает true .

В качестве условия, в операторах ветвления, обычно выступают операции сравнения или логические операции.

Схема оператора ветвления if , выглядит следующим образом:

If (условие) { код запустится, если условие вернёт true }

Приведём пример с оператором ветвления if:

// создадим две переменные var numOne; var numTwo; // присвоим переменным значения numOne = 5; numTwo = 3; if (numOne > numTwo) { alert("Условие возвратило true"); }

В скрипте мы создали две переменные numOne и numTwo , присвоили им числовые значения 5 и 3 .

Далее создали оператор ветвления if , который сравнивает между собой значения двух переменных. Если операция сравнения вернёт true , то запустится код расположенный между фигурными скобками. В нашем случае, появится окошко с сообщением Условие возвратило true . Если операция сравнения вернёт false , то ничего не произойдёт.

Символы двойного слеша // , являются комментарием. После двойного слэша можно написать любой текст, интерпретатор языка JavaScript, будет воспринимать его как комментарий и обрабатывать не будет. Как мы помним, в языках и , тоже можно создавать комментарии.

Оператор ветвления if else , предназначен для запуска того или иного блока кода, в зависимости от значения которое вернёт условие: true или false

Схема оператора ветвления if else , выглядит следующим образом:

If (условие) { код запустится, если условие вернёт true } else { код запустится, если условие вернёт false }

Приведём пример с оператором ветвления if else:

Var numOne; var numTwo; numOne = 5; numTwo = 3; if (numOne > numTwo) { alert("Условие возвратило true"); } else { alert("Условие возвратило false"); }

Присвойте переменной numTwo , число большее чем 5 , например 7 , тогда условие вернёт false и появится окошко с сообщением Условие возвратило false .

В JavaScript есть конструкция условий, которая влияет на выполнения ход программы. Если (по английски if) что-то есть, что-то истинно, тогда делать одно, иначе (по английски else) - делать другое.

Инструкция if

Давайте сразу рассмотрим схему работы инструкции if , она проста и не требует больших объяснений.

If (условие) { код для выполнения, если условие истинно }

Всё просто: если условие истинно, тогда код в блоке {...} выполняется.

Var digit = 4; if (digit == 4) { document.write("Значение переменной digit равно 4."); }

Можно сделать немного странный код:

Var digit = 4; if (true) { document.write("Условие истинно."); }

Инструкция else

В паре с инструкцией if может использоваться инструкция else . Она переводится как "иначе" и задаёт альтернативный код.

Var digit = 4; if (digit

Обратите внимание на разное написание фигурных скобок в данном примере у инструкций if и else. Так писать совсем не обязаетльно, оба синтаксиса правильны.

После инструкции else может идти новая инструкция if. Так мы выполним проверку множественных условий.

Var digit = 4; if (digit

В JavaScript нет инструкции elseif (одним словом), как в PHP.

Если вам нужно выполнить только одну инструкцию, то фигурные скобки блока {...} не нужны. В нашем примере их можно не писать:

Var digit = 4; if (digit

Ложь в JavaScript

Инструкция if (условие) вычисляет и преобразует условие (выражение) в скобках к логическому типу boolian (истина или ложь).

Повторим что есть ложь в JavaScript.

  • Число 0 (ноль).
  • Пустая строка "".
  • Логическое значение false:)
  • Значение null.
  • Значение undefined.
  • Значение NaN (Not a Number - не число).

Всё остальное является истиной.

Пара возможных ошибок:

If ("false") document.write("Это истина.
"); if (false) document.write("Это истина.

");

Тут нужно отличить строку "false" (взята в кавычки), от значения булевого типа false.

If (" ") document.write("Это истина.
"); else document.write("Это ложь.
");

Тут нужно отличить строку " " (внутри пробел), от пустой строки "". Пробел внутри строки делает её не пустой, а содержащий символ. Для интерпритатора не важно буква или пробел - символ есть символ.

Другие условные конструкции в JavaScript

  • Консрукция switch JavaScript .
  • Оператор вопросительный знак

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

Общий вид условного оператора в JavaScript такой:

If (условие) {
//Блок операторов
}
else {
//Блок операторов
}

Сначала идёт ключевое слово if , которое сообщает браузеру, что дальше идёт условный оператор. Внутри скобок указывается условие, которое, соответственно, возвращает true или false . Если выражение в скобках было true (истинно ), то выполняется первый блок операторов, если условие false (ложно ), то выполняется блок операторов в else . Также блок else не является обязательным, и дальше я приведу такой пример.

Давайте теперь потренируемся уже на практике. Решим такую задачу: пользователь вводит число, а мы выводим сообщание - больше оно или меньше 5 .


if (x < 5) alert ("Введённое число меньше пяти");

Разберём этот пример. Первой строкой мы вызываем функцию prompt , которая выводит окно с просьбой ввести число. Дальше пользователь вводит число, которое записывается в переменную x . А дальше идёт условие, которое я перевожу так: Если x меньше 5, то вывести сообщение: "Введённое число меньше пяти", иначе вывести сообщение "Введённое число больше пяти" . Выражение x < 5 возвращает либо true ( < 5 ) или false (x >= 5 ). Также обратите внимание, что мы не используем фигурные скобки. Почему? Потому, что мы используем всего один оператор (функцию alert() ). В принципе, мы можем их поставить, и ничего не поменяется, однако, здесь они будут лишними.

Однако, наша задача содержит существенную ошибку. Если пользователь введёт "5 ", то у нас выводится сообщение "Введённое число больше пяти ", однако, это не совсем правильно. Поэтому давайте преобразуем условие таким образом:

If (x < 5) alert ("Введённое число меньше пяти");
else
if (x == 5) alert ("Вы ввели пять");
else alert("Введённое число больше пяти");

Как видите, блок else в первом условии преобразился. В блоке else проверяется на равенство x и 5-ти. И если это так, то выводится соответствующее сообщение, в противном случае, выводится, что число больше пяти. То есть условие внутри условия - это совершенно нормально. Также обратите внимание, что я по-прежнему не поставил фигурные скобки, так как if-else это один оператор. А когда только один оператор наличие скобок необязательно.

Давайте разберём ещё один пример. Создадим переменную, которая будет true , если введённое число положительное, и false , если число отрицательное.

Var x = prompt("Введите число");
var positive = true;
if (x < 0) positive = false;
alert (positive);

В данном примере используется классический пример, когда мы берём какую-то переменную и присваиваем ей значение по умолчанию. И если это требуется, то меняем. В данном случае, мы меняем значение по умолчанию, если число отрицательное. Однако, данный пример можно было бы написать ещё красивее:

Var x = prompt("Введите число");
var positive = x < 0;

Другими словами, мы переменной positive сразу присваиваем результат сравнения x и нуля.

Теперь поговорим о так называемых сложных условиях . В примерах выше мы рассматривали лишь простые условия, однако, существуют также и другие условия, которые состоят из нескольких условий. И здесь используются две операции: && - логическое И и || - логическое ИЛИ . Давайте напишем такое условие:

If ((x <= 5) && (x >= 0)) {//блок операторов}

Данное условие (сложное условие) даст true , тогда и только тогда, когда x <= 5 И x >= 0 . В противном случае, вернётся false .

Рассмотрим сложное условие с логическим ИЛИ .

If ((x <= 5) || (x == 6)) {//блок операторов}

Перевести это можно так: если x <= 5 ИЛИ x == 6 , то вернуть true , иначе false .

Последнее, что хочется сказать, что бывают условия, которые состоят из нескольких логических И и ИЛИ , и, порой, приходится очень серьёзно напрячь голову, чтобы разобраться в таком условии.

Вот и всё, что хотелось сказать по условным операторам в JavaScript . А дальше нужна лишь практика. Увы, но без практики, Вы никогда не научитесь использовать этот оператор, без знания которого двигаться дальше просто бессмысленно. Так что придумайте какую-нибудь несложную задачу (на подобии той, что мы решили выше) и решите её.

Вернёмся к нашим зайцам

Вспомним задание про зайцев и Мазая из прошлой главы.
Без использования условий и действий, выполняемых (или не выполняемых)
в зависимости от условий, подсчитать количество зайцев в последней
лодке будет непросто.

Добавим в фунцию lastBoatRabbits ветвление:

var lastBoatRabbits = function (totalRabbits ) { if (totalRabbits === 0 ) { // return 0 ; } else { var restRabbits = totalRabbits % 6 ; if (restRabbits === 0 ) { // return 6 ; } else { return restRabbits; } } };

Итак, если зайцев на речке нет , последняя лодка никого не привезёт (на самом деле, она вернётся почти сразу же, т.к. дедушка точно будет знать, что зайцев на речке нет).

А если количество зайцев на реке кратно 6 , то последней будет лодка, полностью загруженная зайцами.

Что ещё можно было бы улучшить в этой программе? Я бы использовал отдельную переменную,
хранящую количество зайцев, помещающихся в лодке, на тот случай, если благодарные
зайцы подарят Мазаю лодку побольше. Мало ли что вдруг.

function (totalRabbits ) { if (totalRabbits === 0 ) { return 0 ; } else { var restRabbits = totalRabbits % boatCapacity; if (restRabbits === 0 ) { return boatCapacity; } else { return restRabbits; } } };

Синтаксис ветвления

Ветвление может иметь часть, которая выполняется, если условие неверно,
а может его не иметь:

// Вариант с двумя ветками: if (rainIsFalling) { stayHome(); // Если rainIsFalling == true, выполняется эта часть } else { walkInAPark(); // Иначе выполняется эта часть } // Вариант с одной веткой: if (musicIsPlaying) { dance(); } // Если musicIsPlaying == false, выполнение программы просто идёт дальше

Условия

В качестве условия в if может выступать выражение сравнения двух чисел или строк,
с использованием операций == , > , < , >= , <= , != и === , любая переменная, которой
было присвоено логическое значение и просто любое значение, которое в результате работы
if будет приведено к логическому значению.

Примеры сравнения:

10 > 5 // => true 11 < 6 // => false 5 >= 5 // => true 3 != 3 // => false "abc" == "abc" // => true "abc" === "abc" // => true

Переменные в качестве условия:

var condition = 10 > 5 ; if (condition) { console .log("10 > 5" ); // Будет выполнено }

Логические операции над условиями

Несколько выражений, возвращающих логическое (или приводимое к логическому) значений
можно объединить с помощью логических операций. Такими операциями называют:
логическое И && , логическое ИЛИ || и логическое отрицание! .

true && true ; // => true false || false ; // => false !false ; // => true

Логическое И возвращает true только в том случае, если с обоих сторон от него true ,
логическое ИЛИ возвращает false только в том случае, если с обоих сторон от него — false .
Отрицание возвращает false для true и, наоборот, true для false .

По правилам Javascript значения 0 , null и undefined приводятся к false .
Однако, получая результат && мы получим первое неприведённое значение, которое
приводится к false , а получая результат || — первое неприведённое значение,
которое приводится к true:

0 && true ; // => 0 6 || 7 || false ; // => 6 !0 ; // => true

Таким образом, функцию, возвращающую количество зайцев в последней лодке можно было бы переписать так:

var boatCapacity = 6 ; var lastBoatRabbits = function (totalRabbits ) { return totalRabbits && (totalRabbits % boatCapacity || boatCapacity); };

Задания

  1. Напишите функцию fizzbuzz , которая принимает параметр number и:
    • Для чисел, кратных трём, возвращает "Fizz"
    • Для чисел, кратных пяти, возвращает "Buzz"
    • Для чисел, кратных пятнадцати (одновременно трём и пяти), возвращает "FizzBuzz"
    • В остальных случаях возвращает исходное число
  2. Напишите фунцию iGoToNorth , которая принимает параметр number и определяет, подходит ли нам переданное число. Число подходит если оно больше 10, меньше 30 и кратно 7.

В этой статье рассмотрим условные и логические операторы языка JavaScript.

Условные операторы JavaScript

Условные операторы - это операторы языка JavaScript (ECMAScript), которые в зависимости от некоторого условия позволяют выполнить одно или несколько определённых инструкций.

Формы условных операторов в JavaScript:

  • условный оператор if (с одной ветвью);
  • условный оператор if...else (с двумя ветвями);
  • условный оператор else if... (с несколькими ветвями);
  • тернарный оператор (?: );
  • оператор выбора switch .

Условный оператор if

Синтаксис оператора if:

If (условие) инструкция

Условный оператор if состоит из:

  • ключевого слова if ;
  • условия (выражения в круглых скобках), которое должно равняться true или false (или быть приведено к одному из этих значений);
  • инструкции, которую нужно выполнить , если условие является true или приведено к нему.

Например:

If (true) count = 4;

В этом примере в качестве условия используется значение true . Это означает, что инструкция count = 4 будет выполняться всегда. Данный пример просто приведен для пояснения принципа работы оператора if , т.к. он лишён всякого смысла.

Например , увеличим значение переменной votes на 1, если она (её тип) является числом:

If (typeof votes === "number") votes++;

Если необходимо выполнить несколько инструкций, то их необходимо поместить в фигурные скобки :

If (typeof votes === "number") { votes++; console.log("Число голосов: " + votes); }

If (typeof votes === "number") { votes++; }

Оператор if...else

Оператор if...else используется, когда необходимо при истинности условия выполнить одни инструкции, а при ложности - другие.

Синтаксис:

If (условие) { одно или несколько инструкций (будут выполняться, когда условие равно true или приведено к true) } else { одно или несколько инструкций (будут выполняться, когда условие равно false или приведено к false) }

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

If (number % 2) { console.log("Число нечётное!"); } else { console.log("Число чётное!"); }

Правило приведения условия к true или false

Если выражение в условии оператора if не равно true или false , то JavaScript приведёт его к одному из этих значений. Данное действие он выполняет с помощью так называемого "правила лжи".

Смысл данного правила: любое выражение является true, кроме следующих значений :

  • false (ложь);
  • "" или "" (пустая строка);
  • NaN (специальный числовой тип данных «не число»);
  • 0 (число «ноль»);
  • null («пустое» значение);
  • undefined («неопределённое» значение).

Например , выведем в консоль браузера приветственное сообщение, в зависимости от того какое значение хранится в переменной nameUser :

If (nameUser) { console.log("Привет, " + name + "!"); } else { console.log("Привет, гость!"); }

Если переменная nameUser будет содержать пустую строку , то по правилу лжи, она будет приведена к значению false . Следовательно, в консоль будет выведено сообщение «Привет, гость!» .

А если, например, переменная nameUser будет содержать строку «Тимур» , то выражение в условии будет приведено к значению true . В результате, в консоли отобразится сообщение «Привет, Тимур!» .

Оператор else if... (несколько условий)

Синтаксис:

If (условие1) { инструкции 1 } else if (условие2) { инструкции 2 } else if (условие3) { инструкции 3 //... } else if (условиеN) { инструкции N } else { инструкции, которые будут выполнены, если ни одно из условий не равно true или не приведёно к этом значению }

Условный (тернарный) оператор (?:)

Тернарный оператор – оператор JavaScript, который можно использовать, когда необходимо в зависимости от условия выполнить одно из двух заданных выражений.

Синтаксис:

Условие? выражение1: выражение2

Тернарный оператор состоит из трех операндов, которые разделяются с помощью символов? и: . Условие тернарного оператора задаётся в первом операнде. Его также можно заключить в скобки. Если условие равно true или будет приведено к этому значению будет выполнено выражение1 , иначе - выражение 2 .

Например:

(number > 10) ? console.log("Число больше 10!") : console.log("Число меньше или равно 10");

В JavaScript допустимы множественные тернарные операторы (?:):

Var dayNumber = new Date().getDay(); day = (dayNumber === 0) ? "Воскресенье" : (dayNumber === 1) ? "Понедельник" : (dayNumber === 2) ? "Вторник" : (dayNumber === 3) ? "Среда" : (dayNumber === 4) ? "Четверг" : (dayNumber === 5) ? "Пятница" : (dayNumber === 6) ? "Суббота" : "Неизвестный день недели"; console.log("Сегодня " + day.toLowerCase() + ".");

Вышеприведённый пример, но с использованием множественной записи оператора if...else:

Var dayNumber = new Date().getDay(); if (dayNumber === 0) { day = "Воскресенье"; } else if (dayNumber === 1) { day = "Понедельник"; } else if (dayNumber === 2) { day = "Вторник"; } else if (dayNumber === 3) { day = "Среда"; } else if (dayNumber === 4) { day = "Четверг"; } else if (dayNumber === 5) { day = "Пятница"; } else if (dayNumber === 6) { day = "Суббота"; } else { day = "Неизвестный день недели"; } console.log("Сегодня " + day.toLowerCase() + ".");

Оператор switch

Оператор switch предназначен для выполнения одного варианта инструкций из нескольких в зависимости от значения выражения. Выбор того или иного варианта определяется посредством строгого равенства результата выражения значению случая (case ).

Синтаксис оператора switch :

Switch (выражение) { case значение1: // ... инструкции, которые будут выполнены, если результат вычисления выражения равен «значение1» break; // необязательная инструкция (если её не использовать, то будет выполнена следующая команда оператора switch) case значение2: // ... инструкции, которые будут выполнены, если результат вычисления выражения равен «значение2» break; // необязательная инструкция (если её не использовать, то будет выполнена следующая команда оператора switch) // ... case значениеN: // ... инструкции, которые будут выполнены, если результат вычисления выражения равен «значениеN» break; // необязательная инструкция (если её не использовать, то будет выполнена следующая команда оператора switch) default: // инструкции, которые будут выполнены, если результат выражения не равен не одному из значений }

Ключевое слово default является необязательным. Оно используется, когда необходимо задать инструкции, которые нужно выполнить, если результат выражения будет не равен ни одному значению варианта (case ).

Инструкция break является необязательной. Она предназначена для прерывания выполнения оператора switch и передачи управлению инструкции, идущей после него.

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

Var countCandyBoys = 1, countCandyGirls = 2, message; switch (countCandyBoys + countCandyGirls) { case 1: message = "Одна конфета"; break; case 2: case 3: message = "Две или три конфеты"; break; case 4: message = "Четыре конфеты"; break; default: message = "Не одна, не две, не три и не четыре конфеты"; } // выведем сообщение в консоль console.log(message);

В вышеприведенном примере вычисленное выражение равно 3. Следовательно, будет выполнены инструкции message = "Две или три конфеты" и break . Инструкция break прервёт дальнейшее выполнение оператора switch и передаст управление инструкции, идущей после него, т.е. console.log(message) . Она выведет в консоль сообщение «Две или три конфеты» .

Например , выведем выведем в консоль текущий день недели:

Var day = ""; switch(new Date().getDay()) { case 0: day = "Воскресенье"; break; case 1: day = "Понедельник"; break; case 2: day = "Вторник"; break; case 3: day = "Среда"; break; case 4: day = "Четверг"; break; case 5: day = "Пятница"; break; case 6: day = "Суббота"; break; default: day = "Неизвестный день недели"; } console.log("Сегодня " + day.toLowerCase() + ".");

Пример, в котором не используется инструкция break :

Var result = "success"; switch (result) { case "success": console.log("Успех!"); case "invalidCaptcha": console.log("Неверная капча!"); default: console.log("Ошибка!"); }

В этом примере выражение оператора switch равно success . Следовательно, будет выполнена инструкция console.log("Успех!") , которая выведет сообщение «Успех!» в консоль. Но так как после неё нет инструкции break , то выполнение скрипта будет продолжено в следующем варианте. Таким образом, инструкции будут выполняться до тех пока пока на пути не встретиться break или не будет достигнут конец оператора switch . В результате выполнения этого примера в консоль будут выведены 3 сообщения: «Успех!» , «Неверная капча!» и «Ошибка!» .

В некоторых случаях может требоваться именно такое поведение, но не в этом. Здесь просто допущена ошибка.

Исправленный вариант примера:

Var result = "success"; switch (result) { case "success": console.log("Успех!"); break; case "invalidCaptcha": console.log("Неверная капча!"); break; default: console.log("Ошибка!"); }

Логические операторы

В JavaScript различают следующие логические операторы:

  • && - логическое "И";
  • || - логическое "ИЛИ";
  • ! -логическое "НЕ".

Если в логическом выражении operand1 && operand2 используются булевы значения, то результатом этого выражения будет значение true , если каждый из них равен true ; иначе значением этого выражения будет значение false .

False && false // false true && false // false false && true // false true && true // true

Если в логическом выражении operand1 && operand2 используются не булевы значения, то результатом этого выражения будет operand1 , если его можно привести к false ; иначе результатом этого выражения будет operand2 .

5 && 0 // 0 1 && 5 // 5 "строка" && undefined // undefined "строка1" && "строка2" // "строка2"

Если в логическом выражении operand1 || operand2 используются булевы значения, то результатом этого выражения будет значение true , если хотя бы один из них равен true ; иначе значением этого выражения будет значение false .

False || false // false true || false // true false || true // true true || true // true

Если в логическом выражении operand1 || operand2 используются не булевы значения, то результатом этого выражения будет operand1 , если его можно привести к true ; иначе результатом этого выражения будет operand2 .

5 || 0 // 5 1 || 5 // 1 "строка" || undefined // "строка" "строка1" || "строка2" // "строка1"

Результатом логического выражения!operand1 будет значение true , если operand1 равно false или его можно привести к этому значению; иначе результатом этого выражения будет значение false .

False // true !true // false !"строка" // false !5 // false"