Якби програмування було б завжди лінійним, то, напевно, його б і не було. Адже практично в будь-якій програмі присутні різні розгалуження, які залежать від певних зовнішніх або внутрішніх факторів. Ось такі розгалуження створюються за допомогою умовних операторів, про які в цій статті я Вам і розповім.
Загальний вид умовного оператора в javascript такий:
if (умова) {
/ / Блок операторів
}
else {
/ / Блок операторів
}
Спочатку йде ключове слово if, яке повідомляє браузеру, що далі йде умовний оператор. Усередині дужок вказується умова, яка, відповідно, повертає true або false. Якщо вираз в дужках був true (істинно), то виконується перший блок операторів, якщо умова false (хибно), то виконується блок операторів в else. Також блок else не є обов'язковим, і далі я наведу такий приклад.
Вирішимо таке завдання: користувач вводить число, а ми виводимо повидомлення - більше воно чи менше 5.
var x = prompt ("Введіть число");
if (x <5) alert ("Введене число менше п'яти");
else alert ("Введене число більше п'яти");
Розберемо цей приклад. Першим рядком ми викликаємо функцію prompt, яка виводить вікно з проханням ввести число. Далі користувач вводить число, яке записується в змінну x. А далі йде умова, яку я перекладаю так: Якщо x менше5, то вивести повідомлення: "Введене число менше п'яти", інакше вивести повідомлення "Введене число більше п'яти". Вираз x <5 повертає або true ( = 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 = 0)) {/ / блок операторів}
Дана умова (складне умова) дасть true, тоді і тільки тоді, коли x = 0. В іншому випадку, повернеться false.
Розглянемо складну умову з логічним АБО.
if ((x <= 5) | | (x == 6)) {/ / блок операторів}
Перевести це можна так: якщо x <= 5 АБО x == 6, то повернути true, інакше false.
Останнє, що хочеться сказати, що бувають умови, які складаються з декількох логічних І і АБО, і, часом, доводиться дуже серйозно напружити голову, щоб розібратися в такій умові.
От і все, що хотілося сказати про умовні оператори в javascript. А далі потрібна лише практика. На жаль, без практики, Ви ніколи не навчитеся використовувати цей оператор, без знання якого рухатися далі просто безглуздо. Так що придумайте якусь нескладну задачу (на подобі тієї, що ми вирішили вище) і вирішіть її.