Jquery if else приклади. Умовні оператори

Source для цього інтерактивного прикладу є встановленим в GitHub репозиторії. Якщо ви думаєте про те, щоб розширити проекти, повторити clone https://github.com/mdn/interactive-examples and send us a pull request.

Syntax

if (condition) statement1 condition An expression that is considered to be either truthy or falsy . statement1 Statement that is executed if condition is truthy . Can be any statement, включаючи further nested if statements. Для execute multiple statements, use a block statement (( ... )) to group those statements. Для execute no statements, use an empty statement. statement2 Statement that is executed if condition is falsy and the else clause exists. Can be any statement, including block statements and further nested if statements.

Description

Multiple if...else statements can be nested to create an else if clause. Зверніть увагу, що це не ввести (в одне слово) keyword in JavaScript.

If (condition1) statement1 else if (condition2) statement2 else if (condition3) statement3 ... else statementN

To see how this works, this is how it would look if the nesting were properly indented:

If (condition1) statement1 else if (condition2) statement2 else if (condition3) ...

Для виконання множинних статей з участю, використовуйте блок статей (( ... )) для груп статей. У загальному, це є хороша практика до будь-якого використання блоків статей, особливо в коді, що призводять до положень:

If (condition) ( statements1 ) else ( statements2 )

Не confuse the primitive Boolean values ​​true and false з truthiness або falsiness of the Boolean object. Будь-яке значення, що не false , undefined , null , 0 , -0 , NaN , або empty string (""), і будь-який об'єкт, включаючи Boolean object whose value is false, вважається truthy when used as condition. For example:

Var b = New Boolean (false); if (b) // this condition is truthy

Examples

Using if...else

if (cipher_char === from_char) ( result = result + to_char; x++; ) else ( result = result + clear_char; )

Using else if

Note that the is no elseif syntax in JavaScript. However, ви можете отримати це з простору між else and if:

If (x > 50) ( /* do the right thing */ ) else if (x > 5) ( /* do the right thing */ ) else ( /* do the right thing */ )

Assignment within the conditional expression

Це є необхідним, щоб не використовувати прямі оцінки в умовах конфігурації, тому що оцінка може бути звільнена з еквівалентом, коли сканування над кодом. Для прикладу, не можна використовувати наступний код:

If (x = y) ( /* do the right thing */ )

Якщо ви потрібні для застосування в розмірі в залежності від expression, як практика є введення додаткової parentheses around the assignment. For example:

If ((x = y)) ( /* do the right thing */ )

Specifications

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
Draft
ECMAScript 2015 (6th Edition, ECMA-262)
Definition of "if statement" in that specification.
Standard
ECMAScript 5.1 (ECMA-262)
Definition of "if statement" in that specification.
Standard
ECMAScript 3rd Edition (ECMA-262)
Definition of "if statement" in that specification.
Standard
ECMAScript 1st Edition (ECMA-262)
Definition of "if statement" in that specification.
Standard Initial definition

Browser compatibility

Компактність таблиці на цій сторінці генерується з структурованих даних. Якщо ви знайдете, щоб дізнатися про ваші дані, клацніть на https://github.com/mdn/browser-compat-data and send us a pull request.

Update compatibility data on GitHub

DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
if...elseChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 3Opera Full support YesSafari Full support YesWebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 1.0nodejs Full support Yes

У цьому прикладі ми спочатку оголошуємо чотири змінні за допомогою ключового слова var, і одразу надає їм числові значення. Далі за допомогою операторів інкременту та декременту ми змінюємо значення чисел. Інформація виводиться за допомогою функції Echo(дивіться статтю " "). Щоб не писати зайвий раз ім'я об'єкта, я використав конструкцію with().

Логічні оператори

Логічні оператори використовуються при перевірці умови, щоб не повторюватися, я зроблю скорочення: лівий операнд – Л.О., а правий операнд – П.О.

  • && - Логічне "І"
  • || - "АБО"
  • ! - "НЕ"
  • > - Л.О. більше П.О.
  • >= - Л.О. більше або дорівнює П.О.
  • < - Л.О. меньше П.О.
  • <= - Л.О. меньше или равен П.О.
  • == - Л.О. дорівнює П.О.
  • ! = - Л.О. не дорівнює П.О.
  • |= - Л.О. дорівнює собі АБО П.О.
  • &= - Л.О. дорівнює собі І П.О.
  • ^= - ВИКЛЮЧНЕ АБО

Тепер розглянемо наступний скрипт:

//***************************************** // логічні операції// logik_if_else.js //***************************************** var a = 10, b = 100, WshShell, title, msg1, msg2, msg3, msg4, vbInformation = 64; // Створюємо екземпляр класу WScript.Shell WshShell = WScript.CreateObject ("WScript.Shell"); title = "Робота з умовним оператором IF ELSE JS"; with(WshShell) ( if (a>= 5 && a<= 100 ) //истина msg1 = "TRUE" ; else msg1 = "FALSE" ; Popup (msg1, 5 , title, vbInformation) ; if (a>= 5 | b== 100) // істина msg2 = "TRUE"; else msg2 = "FALSE" ; Popup (msg2, 5, title, vbInformation); // умовний оператор js if else if (! a) // брехня msg3 = "TRUE" ; else msg3 = "FALSE" ; Popup (msg3, 5, title, vbInformation); if (a&= 100 ) //брехня msg4 = "TRUE" ; else msg4 = "FALSE" ; Popup (msg4, 5, title, vbInformation); )

Як і в попередньому скрипті, тут я використав конструкцію withскорочення програмного коду. Однак, для виведення інформації ми скористалися функцією Popup(дивіться статтю " "). В результаті діалогові вікна закриються автоматично через кілька секунд. Зверніть увагу, що в цьому прикладі ми не використовували фігурні дужкив умовному операторі js if вони актуальні тільки тоді, коли потрібно виконати не один рядок коду, а кілька.

Насамкінець, давайте розглянемо такий практичний приклад, як розв'язання квадратного рівняння:

// Розв'язання квадратного рівняння// uravnenije_if_else.js // *********************************************************** var a, b, c, d, x, x1, x2; //Оголошуємо змінні a = - 2; b = 6; c = 20; //Йде пошук дискримінанта d = Math .pow (b, 2) - 4 * a * c; if (d== 0 ) ( x= b/ (2 * a) ; msg= "Рівняння має одне рішення, x рівно "+ x ) else ( if (d> 0 ) ( x1 = (- b + Math .sqrt (d) ) / (2 * a) ; x2 = (- b- Math .sqrt (d) ) / (2 * a) msg = "Рівняння має два рішення \n x1 рівно "+ x1 + " \n x2 рівно "+ x2; // умовний оператор if else js) else msg = "Рішення немає"; ) WScript.Echo (msg);

var a = 10; var b = (a> 1)? 100: 200; alert(b);

Якщо умова a>1істинно, то змінною bпривласнити значення 100 , інакше змінної b присвоїти значення 200 .

Завдання Js 3_4.Доповнити код: оголошено 3 локальні змінні за допомогою ключового слова var . Необхідно в змінну max присвоїти значення наступного тернарного оператора: якщо a більше b, то повертаємо a, інакше повертаємо b.
Фрагмент коду:

if (a * b< 6) { result = "Мало"; } else { result = "Много"; }


Питання для самоконтролю:

  1. Яким є синтаксис тернарного оператора?
  2. Скільки аргументів у тернарного оператора?

Оператор перемикання в javaScript - switch

Оператор switch javascript служить для перевірки змінної на безліч значень:

Синтаксис:

switch (змінна або вираз) (case варіант1: //..блок операторів.. break case варіант2: //..блок операторів.. break default: //..блок операторів..)

Перевіряється значення змінної або виразу: у кожному caseперевіряється одне із значень, у разі відповідного значення виконується той чи інший блок операторів, що відповідає даному case.

Блок, який починається зі службового слова default, можна опустити. Оператори блоку будуть виконані у випадку, якщо жодне з перерахованих значень у всіх caseне підходить.

Важливо:Оператор break є обов'язковим після кожного розглянутого значення змінної (після кожного case); якщо його не використовувати, то будуть виведені всі, розташовані нижче оператори

Порівняємо з оператором IF:

var a = 2; switch(a) ( case 0: // if (a === 0) case 1: // if (a === 0) alert("Нуль або один"); // тоді виводимо... break; case 2: // if (a === 2) alert("Два"); // тоді виводимо... break; default: // else alert("Багато"); // інакше виводимо... )

Як згрупувати кілька варіантів?

Для виконання тих самих операторів можливе угруповання кількох case. Як у прикладі вище:

Case 0: case 1: alert("Нуль або один"); break; ...

При a = 0 і a = 1 виконується той самий оператор: alert("Нуль або один");

Приклад 4:Запитувати користувача ввести колір. Виводити переклад англійською мовою введеного кольору. Для кольору "синій"і "блакитний"видавати те саме значення.


✍ Рішення:
  • Створіть веб-сторінку з html-скелетом та тегом script.
  • Ініціалізуйте змінну color
  • var color = prompt("Який колір?");

    var color = prompt("Який колір?");

  • Перевірте значення змінної за допомогою конструкції switсh, виводячи на кожне значення - відповідний переклад:
  • switch (color) (case "червоний": alert("red"); break; case "зелений": alert("green"); break; // ...

    Якщо змінна colorмає значення "червоний", вивести в модальне вікно переклад - "red" і вийти з конструкції (break;). Якщо змінна colorмає значення "зелений", тобто вивести в модальне вікно переклад - "green" і вийти з конструкції (break;).

  • Для квітів "синій"і "блакитний"виконайте угруповання:
  • // ... case "синій": case "блакитний": alert("blue"); break; // ...

    Якщо змінна colorмає значення "синій" або змінна colorмає значення "блакитний", вивести в модальне вікно переклад - "blue" і вийти з конструкції (break;).

  • Організуйте висновок для тих кольорів, які не передбачені програмою:
  • // ... default : alert( "у нас немає відомостей щодо даного кольору")) // кінець switch

    // ... default: alert("y нас немає відомостей щодо даного кольору") ) // кінець switch

  • Протестуйте сценарій у браузері.

Завдання Js 3_6.Знайдіть та виправте помилки в наступному фрагменті коду:

14 15 16 17 var number = prompt( "Введіть число 1 або 2:"); switch (number) ( case "1" ( document.write ("Один" ) ; ) ; break ; case "2" ( document.write ( " Два" ) ; ) ; break ; default ( document.write ( "Ви ввели значення, відмінне від 1 та 2") ; } ; }

var number = prompt("Введіть число 1 або 2:"); switch (number) ( case "1" ( document.write("Один"); ); break; case "2" ( document.write("Два"); ); break; default ( document.write("Ви ввели значення, відмінне від 1 і 2"); ); )


Завдання Js 3_7.Що виводиться на екрані під час виконання наступного коду?:

1 2 3 4 5 6 7 8 9 10 11 12 13 var value = "2"; switch (value) ( ​​case "1" : case "2" : case "3" : document.write ("Hello" ) ; break ; case "4" : case "5" : document.write ("World" ) ; default : document.write ("Error" ) ; )

var value = "2"; switch (value) ( ​​case "1": case "2": case "3": document.write("Hello"); break; case "4": case "5": document.write("World"); default: document.write("Error"); )


Завдання Js 3_8.У користувача запитувати число – кількість ворон на гілці. Залежно від введеного числа (не більше 10), виводити повідомлення: - На гілці сидить 1 ворона- На гілці сидить 4 ворони- На гілці сидить 10 ворон

  1. Залежно від введеного числа, змінюється закінчення слова "Гава".
  2. Для перевірки використати оператор Switch javascript.
  3. Збережіть цю сторінку в папці результатів (вона знадобиться для подальших робіт).


Питання для самоконтролю:

  1. У якому разі доцільно як умовного оператора використовувати конструкцію switch?
  2. Для чого є блок default в операторі switch?
  3. Чи обов'язково використання оператора break у конструкції switch?
  4. Як здійснюється групування для кількох варіантів значень оператора switch?

Циклічні оператори мови javaScript - For

Синтаксис:

for(початкове значення лічильника; умова; збільшення лічильника) ( //..блок операторів.. )

Важливо:Цикл в javascript for використовується, коли відомо, скільки разів повинні повторитися циклічні дії (скільки ітерацій у циклу)

  • Як початкове значення лічильника ітерацій використовується вираз привласнення: наприклад, i=0 - лічильник циклу починається з нуля:
  • for(var i = 0; умова; збільшення лічильника) ( //..блок операторів.. )

  • Як збільшення лічильника вказується крок, з яким повинен збільшуватися лічильник: наприклад, вказує на те, що кожна ітерація циклу буде супроводжуватися його збільшенням на 1 :
  • for(var i = 0; умова; i++) ( //..блок операторів.. )

  • Умова циклу - це і є кінцеве значення лічильника: наприклад, i10, зупиняє цикл:
  • for(var i = 0; i<10; i++) { //..блок операторов.. }

Розглянемо приклад використання циклу for javascript:

Приклад 5:Вивести послідовність чисел 0 1 2 3 ... 9 , кожна цифра - з нового рядка. 0 1 2 ... 8 9


✍ Рішення:
  • Для виведення послідовності чисел використовуватимемо лічильник циклу for , який повинен змінювати своє значення від 0 до 9 згідно з послідовністю.
  • Значить, для початкового значення лічильника циклувстановіть значення, що дорівнює 0 ; в якості умови циклувстановіть заключне значення - ii = 9; крок лічильника повинен дорівнювати 1 (i++), тому що різниця між членами послідовності - одиниця:
  • for (var i=0; i<10; i++) { document.write(i+"
    "); }

    У прикладі на екран виводяться значення лічильника циклу, так як збільшення лічильника i++ відповідно на екрані будуть з'являтися 0 1 2 3 ... 9 , причому кожна цифра - з нового рядка (тег
    ).

  • Протестуйте сценарій у браузері.

Завдання Js 3_9. 1 до 15 .

  1. Як послідовність чисел використовуйте лічильник циклу for.
  2. Для змінної-суматора слід використовувати ідентифікатор змінної sum.

Фрагмент коду:

For (var i=...;...;...)( sum = sum + ...; ) ...

Оператори виходу із циклу breakі continueв JavaScript. Оператор Exit

Оператор break перериває виконання тіла циклу, тобто. здійснює вихід із циклу в JavaScript.

У той час як оператор continue перериває виконання поточної ітерації циклу, але продовжуючи при цьому виконання циклу з наступної ітерації.

Розглянемо роботу операторів break та continue на прикладі:

Приклад:Розберіть алгоритм фрагмента коду. Що буде виведено?

Фрагмент коду:

1 2 3 4 5 6 for (var i = 0; i< 10 ; i++ ) { if (i== 4 ) continue ; document.write (i+ "
" ) ; if (i== 8 ) break ; )

for (var i = 0; i<10;i++) { if (i==4) continue; document.write(i+"
"); if (i==8) break; )


✍ Рішення:
  • У третьому рядку прикладу стоїть умова, через яку цифра 4 не виводитиметься на екран: оператор continueперейде до наступної ітерації циклу, не завершивши поточну.
  • У рядку №5 здійснюється вихід із циклу, але при цьому цифра 8 буде виведена на екран, так як оператор виведення стоїть до умови (у 4-му рядку). Зустрівши break, інтерпретатор завершить роботу циклу
  • Т.ч. на екрані буде: 0 1 2 3 5 6 7 8 - кожна цифра з нового рядка.

Завдання Js 3_10.Вивести суму всіх цілих чисел від 1 до 15 , виключивши із загальної суми числа 5 і 7 .

Оператор Exit

У мові javasctipt передбачений оператор виходу з програмного коду-оператор exit.
Найчастіше оператор використовується для унеможливлення помилки введення користувача.


Розглянемо приклад:

Приклад 6:Вимагати користувача ввести число. Якщо введено не число, виводити повідомлення "Необхідне число!"та зупиняти роботу програми.


✍ Рішення:
  • Ініціалізуйте змінну numberзначенням, введеним користувачем у модальне вікно:
  • var number = prompt("Введіть число");

  • Використовуючи функцію parseInt перетворення рядка на ціле число, перевірте, чи є введене значення числом:
  • number=parseInt(number); // поверне NaN - не число

    Якщо введено не число, функція поверне значення NaN (з анг. not a number- Не число).

  • Перевірте значення змінної numberза допомогою функції isNaN:
  • x = isNaN(number); // поверне true, якщо значення не числове

    Функція isNaN повертає значення trueу випадку, якщо змінна не є числом

  • за правилу "брехні"організуйте перевірку значення змінної x. Якщо значення не числове виведіть відповідне зауваження та завершіть програму:
  • if (x)( alert("Необхідне число!"); exit; // вихід з програми)

  • Для продовження програми (якщо введене значення було числом), виведіть наступне вікно із пропозицією введення:
  • alert("Введіть друге число"); // При введенні не числа оператор не виконається

  • Протестуйте сценарій у браузері.

Питання для самоконтролю:

  1. Перерахуйте три параметри циклу forі поясніть їхнє призначення.
  2. Які оператори призначені для виходу з циклу та для його переривання? Наведіть приклади їхнього використання.
  3. Для чого призначений оператор exit?

Чи можливе кілька лічильників в одному FOR?

Цікава робота з циклом for можлива при використанні одночасно двох лічильників у циклі.
Розглянемо приклад:

Приклад 7:За допомогою скрипта роздрукувати наступні пари змінна-значення в три рядки: i=0 j=2 i=1 j=3 i=2 j=4


✍ Рішення:
  • У циклі for організуйте два лічильники: лічильник i для виведення послідовності 0 1 2 , лічильник j для виведення послідовності 2 3 4 :
  • 1 2 3 for (i = 0, j = 2; i< 10 , j< 5 ; i++, j++ ) { }

    for(i=0, j=2; i<10, j<5; i++, j++) { }

    Кожен із трьох параметрів циклу for тепер має по два значення, які перераховуються через кому(наприклад, перший параметр із двома значеннями: i=0, j=2). Самі параметри перераховуються через точку з комою(;).

  • Для виведення з кожного рядка використовуйте тег
    :
  • 1 2 3 4 for (i = 0, j = 2; i< 10 , j< 5 ; i++, j++ ) { document.write ("
    i=" , i, "j=" , j) ; )

    for(i=0, j=2; i<10, j<5; i++, j++) { document.write("
    i=", i, "j=",j);

Генерація сторінки "на льоту": як це?

Перед виконанням наступного завдання розглянемо приклад динамічної побудови html-сторінкиза допомогою JavaScript.

Приклад 8:

  • Необхідно динамічно генерувати марковані та нумеровані списки на веб-сторінці залежно від введених користувачем даних: запитувати користувача ввести вид списку(нумерований (цифра 1) або маркований (цифра 2)), а потім кількість пунктів списку.
  • Залежно від відповіді виводити на екран теги чи маркованого чи нумерованого списку з необхідною кількістю пунктів.
  • Якщо введено неіснуючий тип списку, видавати повідомлення "Введіть правильний тип!"та здійснювати вихід із програми ().

Згадаймо теги:
теги нумерованого списку:

<ol > <li > <li > <li > </ol>

теги маркованого списку:

var listType=prompt("Введіть "1" - якщо маркований список, "2" - якщо нумерований список");

  • Перевірте введене значення: для нумерованого списку (цифра 1) виведіть тег
      , для маркованого (цифра 2) - тег
        . Якщо введено інше значення, виведіть зауваження та закінчіть програму:

            ") else ( alert("Введіть правильний тип"); exit; )

          • Ініціалізуйте змінну kolvoзначенням, введеним користувачем у модальне вікно:
          • var kolvo=prompt("Введіть кількість пунктів");

          • Для перетворення рядкового значення на числове використовуйте функцію parseInt:
          • for (var i=1; i<=kolvo; i++) document.write("");

          • Оскільки списки закриваються відповідними тегами, в залежності від виду списку виведіть теги, що закривають:
          • if (listType== "1" ) document.write ("" ) else if (listType== "2" ) document.write ("" ) ;

            if (listType=="1") document.write("

        ") else if (listType=="2") document.write("
      ");

    1. Протестуйте сценарій у браузері.
    2. Завдання Js 3_11.
      Написати скрипт, який виводить теги input(елементи управління) різного типу, залежно від введеної цифри:

      1 - текстове поле,
      2 - кнопка,
      3 - radio(Перемикач).

      Кількість виведених тегів має також запитувати.

      Згадаймо теги:

      Для 1 - текстове поле: Для 2 – кнопка: Для 3 - radio:

      Приклад виведення:

      Завдання Js 3_12.Намалювати шахівницю 9х9, використовуючи цикли javascript for . "Малювати" дошку слід тегами html для таблиці:

      Згадаймо теги:

      <table border = "1" width = "30%" > <tr > <td >-</td > -</td > </ tr > </ table >

      --

      • Для малювання 9 рядків необхідно організувати зовнішній цикл for з лічильником i.
      • Для малювання 9 осередків у кожному рядку необхідно організувати внутрішній (вкладений) цикл for з лічильником j.
      • Для відображення тегів осередків та рядків слід використовувати метод document.write.

      Результат:

      Додатково:

      1. У комірки таблиці вивести таблицю множення, використовуючи лічильники циклу (i та j).
      2. Перший ряд і першу колонку вивести з червоним тлом (атрибут осередку таблиці bgcolor):
        <td bgcolor = "red" >-</td >

        -

      Результат:


      Питання для самоконтролю:

      1. Поясніть, що означає поняття «динамічна побудова сторінки»?
      2. Яка конструкція мови найчастіше використовується при динамічній побудові сторінки?

      Циклічні оператори мови javaScript - While

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

      while (умова) (//..блок операторів..);

      Приклад:Виводити у діалогове вікно ступеня двійки до 1000 (2, 4, 8...512). Використати метод alert()


      ✍ Рішення:
      • Лістинг скрипту:
      • 1 2 3 4 5 var a = 1; while (a< 1000 ) { a*= 2 ; alert(a) ; }

        var a = 1; while (a< 1000){ a*=2; alert(a); }

        a*=2 → використано операцію складового привласнення: твір, поєднаний із привласненням, тобто. те саме, що a = a*2

      • Протестуйте результат у браузері.

      Як працюють оператори break і continue у циклі while?

      Приклад:

      var a = 1; while (a< 1000 ) { a*= 2 ; if (a== 64 ) continue ; if (a== 256 ) break ; alert(a) ; }

      var a = 1; while (a< 1000){ a*=2; if (a==64) continue; if (a==256) break; alert(a); }

      Ступені двійки виводитимуться до 128 включно, причому значення 64 буде пропущено. Тобто. у діалогових вікнах ми побачимо: 2 4 8 16 32 128

      Завдання Js 3_13.Які значення виведе наступний фрагмент коду?

      var counter = 5; while (counter< 10) { counter++; document.write("Counter " + counter); break; document.write("Эта строка не выполнится."); }


      Завдання Js 3_14.Написати код зведення ху ступінь y, використовуючи цикл while. Запитувати значення змінних та виводити результат за допомогою alert() .

      Доповніть код:

      1 2 3 4 5 6 7 8 9 var x = ...; var y = ...; counter = 1; chislo = x; while (...) ( chislo = x * ...; counter = ...; ) alert (chislo) ;

      var x = ...; var y = ...; counter = 1; chislo = x; while (...)( chislo=x*...; counter=...; ) alert(chislo);

      A Виправте помилку в програмі, призначену для знаходження факторіалу числа:

      1 2 3 4 5 6 7 8 9 10 11 12 13 var counter = prompt("Введіть число"); var factorial = 1; document.write ( "Факторіал числа:"+ counter + "!="); do ( if ( counter == 0 ) ( factorial = 1 ; break ; ) factorial = factorial / counter ; counter = counter + 1 ; ) while ( counter > 0 ) ; document.write (factorial);

      var counter = prompt("Введіть число"); var factorial = 1; document.write("Факториал числа:" + counter + "! = "); do ( if (counter == 0) ( factorial = 1; break; ) factorial = factorial / counter; counter = counter + 1; ) while (counter > 0); document.write(factorial);


      Завдання Js 3_16.Модифікувати програму для введення імені користувача:

      Запитувати ім'я користувача до тих пір, поки користувач дійсно введе ім'я (тобто поле буде заповнено і не натиснута клавіша cancel). Коли ім'я введено, виводити "Привіт, ім'я!". document.

      Як шукати помилки в javascript?

      У деяких випадках код на сторінці не працює незрозуміло з якої причини. Де шукати помилки? У таких випадках можна застосувати оператор try..catch.

      Оператор try..catch намагається виконати фрагмент коду, і, якщо у коді є помилка, існує можливість видати помилку на екран.
      Помилка зберігається в об'єкті e.message.

      Розглянемо роботу оператора з прикладу:

      Приклад:написати у програмі оператор із помилкою. Перевіряти наявність помилки в передбачуваному помилковому коді: якщо помилка в коді є - видавати повідомлення "обробка помилки: назва помилки". Після перевірки помилкового оператора, незалежно від того, чи є в коді помилка, видавати повідомлення "завершальні дії"


      ✍ Рішення:
      • Як повідомлення з помилкою використовуватимемо метод prompt() , написаний з помилкою - promt(). Повідомлення з помилкою укласти в блок try:
      • alert("до"); try ( promt("введіть число"); // оператор з помилкою)

        Try з англ. - "намагатися", таким чином, ставимо оператор try перед фрагментом коду, який, можливо, містить помилку (у разі помилка дійсно є).

      • Повідомлення з повідомленням про помилку слід розмістити до блоку catch:
      • 6 7 8 9 catch (e) (alert( "обробка помилки:"+ e.message); )

        catch(e) ( alert("обробка помилки: "+e.message); )

        Якщо помилка дійсно є, то оператор catch (з англ. "Ловити") зберігає цю помилку в об'єкті e. Надалі її можна вивести у діалогове вікно-e.message.

      • Завершальне повідомлення, яке необхідно виводити незалежно від того, чи є в коді помилка, помістіть блок finally:
      • finally ( alert ( " завершальні дії " ); ) alert ( " після " );

        Якщо помилка все ж таки є, то інтерпретатор після її виведення в нашому прикладі перейде на виконання блоку catch, а потім finally (з англійського "завершення", "нарешті"), який виконається завжди, незалежно від того, чи була помилка чи ні. Навіть якщо виникла помилка в блоці catch.

      Важливо:Блок finally у конструкції необов'язковий.


      Завдання Js 3_17.Виконайте приклад, описаний вище, з наступними модифікаціями:

    3. Видаліть блок finally та простежте за виконанням коду.
    4. Поставте замість помилкового оператора безпомилковий та подивіться, яким буде результат.
    5. Резюме:

      На уроці були розглянуті наступні оператори мови javascript та конструкції:

      Javascript умовні оператори:

    6. Оператор if
    7. Умовне привласнення (тернарний оператор)
    8. Оператор перемикання switch
    9. Оператори циклу:

    10. Цикл for
    11. Цикл while
    12. Цикл do...while
    13. Цикл for...in
    14. Підсумкове завдання Js 3_18.
      Створити гру для двох:

      1. Програма просить першого гравця ввести число від 1 до 100 (другий гравець не бачить введене число). Потім другого гравця просить вгадати введене число. У відповідь виводиться повідомлення «мало»або «багато»залежно від введеної відповіді. Якщо гравець вгадує, – виводиться вітання. Якщо не вгадує - гра продовжується (до тих пір, коли число дійсно буде вгадано).
      2. Прораховувати кількість спроб та видавати результат, коли число розгадано.


      Питання для самоконтролю:

      1. У яких випадках доцільно використовувати цикл For In? Назвіть приклад його використання.
      2. Яке призначення оператор try..catch?
      3. Поясніть призначення кожного блоку оператора try..catch.

      Керуючі інструкції- це інструкції, що дозволяють керувати виконанням програмного коду. Зазвичай код, що виконується в керуючій інструкції називають тілом цієї інструкції.

      Керуючі інструкції можуть бути вкладеними, а також використовуватися всередині інших керуючих інструкцій.

      Умовні інструкції

      За умовчанням інтерпретатор JavaScript виконує інструкції одну за одною в порядку їхнього слідування у вихідному коді. У тих випадках, коли виконання або невиконання деяких інструкцій повинно залежати від виконання або невиконання певних умов, використовуються умовні інструкції.

      Інструкція if

      Інструкція if має дві форми. Синтаксис першої форми:

      Вираз у круглих дужках називається умовою виконанняінструкції if або коротко умовою. Спочатку обчислюється значення виразу. Отримане значення, якщо необхідно, неявно перетворюється на булевого типу. Якщо результат обчислення виразу є значення true , то інструкція виконується. Якщо вираз повертає false, то інструкція не виконується:

      If (true) alert("Виконено!"); if (false) alert("Не виконається!");

      Синтаксис if дозволяє виконати тільки одну інструкцію, проте якщо потрібно виконати більше однієї інструкції, потрібно використовувати складову інструкцію :

      If (true) ( ​​var str = "Hello!"; alert(str); )

      Синтаксис другої форми:

      If (вираз) інструкція; else інструкція;

      Ключове слово else дозволяє додати інструкцію, яка виконується в тому випадку, якщо умова має хибне значення:

      If (false) alert("Не виконається"); else alert("Виконається");

      Як було зазначено, управляючі інструкції може бути вкладеними, що дозволяє створювати такі конструкції:

      Var num = 2; if (num == 1) ( alert("значення num: " + num); ) else if (num == 2) ( alert("значення num: " + num); ) else ( alert("Не знаю такого числа !"); )

      У цьому коді немає нічого особливого. Це просто послідовність інструкцій, де кожна інструкція if є частиною else попередньої інструкції if . Така форма запису на перший погляд може здатися не зовсім зрозумілою, тому розглянемо синтаксично еквівалентну форму, що показує вкладеність інструкцій if:

      Var num = 2; if (num == 1) ( alert("значення num: " + num); ) else ( if (num == 2) ( alert("значення num: " + num); ) else ( alert("Не знаю такого числа!"); ) )

      Умовні оператори

      Умовні оператори дозволяють пропустити або виконати інші оператори, залежно від значення зазначеного виразу. Ці оператори є точками прийняття рішень у програмі, і іноді їх також називають операторами «розгалуження».

      Якщо уявити, що програма - це дорога, а інтерпретатор JavaScript - мандрівник, що йде по ній, то умовні оператори можна уявити як перехрестя, де програмний код розгалужується на дві або дорожчі, і на таких перехрестях інтерпретатор повинен вибирати, якою дорогою рухатися далі .

      Оператор if/else

      Оператор if - це базовий оператор, що дозволяє інтерпретатору JavaScript приймати рішення або, точніше, виконувати оператори в залежності від умов. Оператор if має дві форми. Перша:

      if (вираз) оператор

      У цій формі спочатку обчислюється вираз. Якщо отриманий результат є істинним, оператор виконується. Якщо вираз повертає помилкове значення, оператор не виконується. Наприклад:

      If (username == null) // Якщо змінна username дорівнює null або undefined username = "Alex"; // Визначити її

      Зауважте, що дужки навколо умовного виразу є обов'язковою частиною синтаксису оператора if.

      Друга форма оператора if вводить конструкцію else, що виконується в тих випадках, коли вираз повертає хибне значення. Її синтаксис:

      if (вираз) оператор1 else оператор2

      Ця форма виконує оператор1, якщо вираз повертає справжнє значення, і оператор2, якщо вираз повертає хибне значення. Наприклад:

      If (n == 1) console.log("Отримано 1 нове повідомлення."); else console.log("Отримано" + n + "нових повідомлень.");

      Оператор else if

      Оператор if/else обчислює значення виразу та виконує той чи інший фрагмент програмного коду, залежно від результату. Але що якщо потрібно виконати один із багатьох фрагментів? Можливий спосіб зробити це полягає у застосуванні оператора else if. Формально він не є самостійним оператором JavaScript; це лише поширений стиль програмування, що полягає у застосуванні повторюваного оператора if/else:

      If (n == 1) ( // Виконати блок 1 ) else if (n == 2) ( // Виконати блок 2 ) else if (n == 3) ( // Виконати блок 3 ) else ( // Якщо не один із попередніх операторів else не був виконаний, виконати блок 4 )

      У цьому вся фрагменті немає нічого особливого. Це просто послідовність операторів if де кожен оператор if є частиною конструкції else попереднього оператора.

      Оператор switch

      Оператор if створює розгалуження у потоці виконання програми, а багатопозиційне розгалуження можна реалізувати за допомогою кількох операторів else if. Однак це не завжди найкраще рішення, особливо якщо всі гілки залежать від значення одного і того ж виразу. У цьому випадку марнотратно повторно обчислювати значення одного і того ж виразу в декількох операторах if.

      Оператор switch призначений саме для таких ситуацій. За ключовим словом switch слід вираз у дужках і блок коду у фігурних дужках:

      switch (вираз) (інструкції)

      Однак повний синтаксис оператора switch складніший, ніж показано тут. Різні місця в блоці позначені ключовим словом case, За яким слідує вираз і символ двокрапки.

      Коли виконується оператор switch, він обчислює значення виразу, а потім шукає позначку case, що відповідає цьому значенню (відповідність визначається за допомогою оператора ідентичності ===). Якщо мітку знайдено, виконується блок коду, починаючи з першої інструкції, що слідує за міткою case. Якщо мітка case з відповідним значенням не знайдена, виконання починається з першої інструкції, яка слідує за спеціальною міткою default:. Якщо мітка default: відсутня, блок оператора switch пропускається повністю.

      Роботу оператора switch складно пояснити словами, набагато зрозуміліше виглядає пояснення з прикладу. Наступний оператор switch еквівалентний повторюваним операторам if/else, показаним у попередньому прикладі:

      Switch(n) ( case 1: // Виконується, якщо n === 1 // Виконати блок 1 break; // Тут зупинитися case 2: // Виконується, якщо n === 2 // Виконати блок 2 break; / / Тут зупинитися case 3: // Виконується, якщо n === 3 // Виконати блок 3 break; // Тут зупинитися default: // Якщо все інше не підходить... // Виконати блок 4 break; // Тут зупинитися )

      Зверніть увагу на ключове слово breakнаприкінці кожного блоку вистачить. Оператор break призводить до передачі управління в кінець оператора switch і продовження виконання операторів, що наведені далі. Конструкції case в операторі switch задають тільки початкову точку програмного коду, що виконується, але не задають жодних кінцевих точок.

      У разі відсутності операторів break оператор switch почне виконання блоку коду з позначкою case, що відповідає значенню виразу, і продовжить виконання операторів, доки не дійде до кінця блоку. В окремих випадках це корисно для написання програмного коду, який переходить від однієї мітки case до наступної, але в 99% випадків слід акуратно завершувати кожен блок case оператором break. (При використанні switch всередині функції замість break можна використовувати оператор return. Обидва ці оператори служать для завершення роботи оператора switch і запобігання переходу до наступної мітки case.)

      Нижче наводиться більш практичний приклад використання оператора switch, він перетворює значення в рядок способом, що залежить від типу значення:

      Function convert(x) ( switch(typeof x) ( // Перетворити число на шістнадцяткове ціле case "number": return x.toString(16); // Повернути рядок, укладений у лапки case "string": return """ + x + """; // Будь-який інший тип перетворюється звичайним способом default: return x.toString(); ) ) console.log(convert(1067)); // Результат "42b"

      Зверніть увагу, що у двох попередніх прикладах за ключовими словами case слідували числа або рядкові літерали. Саме так оператор switch найчастіше використовується на практиці, але стандарт ECMAScript дозволяє вказувати після case довільні вирази.

      Оператор switch спочатку обчислює вираз після ключового слова switch, а потім виразу case у тому порядку, в якому вони вказані, доки не буде знайдено відповідне значення. Факт збігу визначається з допомогою оператора ідентичності ===, а чи не з допомогою оператора рівності ==, тому висловлювання мають збігатися без будь-якого перетворення типів.

      Оскільки при кожному виконанні оператора switch обчислюються не всі висловлювання case, слід уникати використання виразів case, що мають побічні ефекти, такі як виклики функцій та привласнення. Найбезпечніше обмежуватися у виразах case константними виразами.

      Як пояснювалося раніше, якщо жодне з виразів case не відповідає виразу switch, оператор switch починає виконання оператора з позначкою default:. Якщо позначка default: відсутня, тіло оператора switch повністю пропускається. Зверніть увагу, що в попередніх прикладах позначка default: вказана в кінці тіла оператора switch після всіх позначок case. Це логічне та звичайне місце для неї, але насправді вона може розташовуватись у будь-якому місці всередині оператора switch.