Главная » Условные операторы и циклы

Условные операторы и циклы


02.03.2021, 22:09
Условные операторы

Общий синтаксис условных выражений (выражений типа "если ... то"):

Код

if (проверяемое условие) {
  /* действие, выполняемое, когда условие верно */
} else {
  /* действие, выполняемое, когда условие не верно */
}

Внутри круглых скобок условие преобразуется к булиновому типу, либо true, либо false. В зависимости от этого работа программы может идти по одному из сценариев.

Например:

Код

if ( x > 0 ) {
  alert("Число больше нуля!");
} else {
  alert("Число меньше нуля!");
}

Иногда требуется проверить несколько условий, для этого используется конструкция else if ("если нет...то"):

Код

const question = prompt('Сколько ног у собаки?', '');

if ( question == 2 ) {
  alert("2 ноги?! Что-то маловато!");
} else if ( question == 3 ) {
  alert("Подумайте ещё! Собака - не велосипед!");
} else if ( question == 4 ) {
  alert("Это правильный ответ!");
} else {
  alert("Не верно!");
}

Как вариант, можно комбинировать операторы в проверяемом условии, например, используя логическое "И" (&&)

Код

if ( number < 10 && number > 0 ) {
  console.log( "Число " + number + " находится в промежутке от 0 до 10");
}

здесь вариант с логическим "ИЛИ" (||)

Код

if ( x > 0 || y > 0 ) {
  console.log(" Это положительное число! ");
}

а также используя логическое отрицание (!)

Код

let performed = false;

if (!performed) {
  console.log("Условие выполнено");
}

Немного более продвинутый сценарий использования условных выражений:

Код

const dayOfWeek = prompt('Какой сегодня день недели?', '');

if (dayOfWeek == 'суббота') {
  let answer = +prompt("Сколько у вас есть денег?","");

  if (answer >= 1500) {
  alert('Сходите в кафе и закажете пиццу домой');
  } else if (answer >= 1000) {
  alert('Сходите в кафе');
  } else if (answer >= 500) {
  alert('Закажите пиццу домой');
  } else {
  alert('просто посмотрите телевизор');
  }
} else {
  alert('Эх! Жаль, не суббота сегодня!');
}

Запись условий с помощью тернарного оператора.

Тернарным оператор назван по причине того, что в его работе участвует три аргумента:

Код

(num === 5) ? console.log("Ок") : console.log("Error!");

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

Оператор switch

Альтернативой ветвлению при использовании оператора if является оператор switch, проверка в котором идёт только на строгое соответствие (===).

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

Код

switch (выражение) {
  операторы
}

Разберём пример:

Код

const num = 50;

switch(num) {

  case 49:
  console.log('Не верно');
  break;

  case 100:
  console.log('Не верно');
  break;

  case 50:
  console.log('Верно');
  break;
   
  default:
  console.log('Правильный ответ был 50');
  break;
}

Циклы

В JavaScript имеется пять операторов цикла:

- while
- do / while
- for
- for / of ( for / await )
- for / in

Цикл while - это базовый цикл JavaScript. Его синтаксис:

Код

while (условие) {
  действие, выполняемое, пока условие истинное
}

Пример такого цикла:

Код

let num = 50;

while(num < 55) {
  console.log(num);
  num++;
}

Результат в консоли


50
51
52
53
54


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

Код

while (true) {
  здесь какой-то выполняемый код
}


Цикл do / while - похож на цикл while, но условие проверяется не в начале цикла, а в конце, поэтому тело цикла всегда выполняется, по крайней мере, один раз.

Код

do {
  здесь какой-то выполняемый код
}
while ( условие );

Перепишем предыдущий пример, но уже используя цикл do / while

Код

let num = 50;

do {
  console.log(num);
  num++;
}
while (num < 55);

В консоли получим тот же результат, что и в примере выше.

Цикл for - самый используемый вид цикла. Его использование характеризуется объявлением (инициализацией) переменной-счётчика до начала цикла, далее проверяется условие и если оно истинное, выполняется тело цикла, после чего переменная-счётчик инкрементируется (обновляется) и проверяется заново условие.

Код

for (инициализация ; проверка ; инкрементирование) {
  здесь исполняемый код  
}

Пример ниже с помощью цикла for позволяет вывести в консоль числа от 0 до 9-и

Код

for (let i = 0; i < 10; i++) {
  console.log(i);
}

Немного более сложный пример цикла for

Код

let i, j, sum = 0;

for (i = 0, j = 10 ; i < 10 ; i++, j--) {
  console.log(sum += i * j) ;
}

Результат работы цикла в консоли:


0
9
25
46
70
95
119
140
156
165


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

Код

for ( ; ; ) {
  выполняемый код
}


Можно прервать цикл на определённой итерации с помощью break:

Код

for (let i = 1; i < 10; i++) {
  if (i === 6) {
  break;
  }
  console.log(i);
}

И в консоли увидим ожидаемый результат:


1
2
3
4
5

Альтернативным вариантом является использование вместо break оператора continue, который позволяет просто пропустить какую-либо итерацию без остановки цикла:

Код

for (let i = 1; i < 10; i++) {
  if (i === 6) {
  continue;
  }
  console.log(i);
}

Выходные данные в консоли:


1
2
3
4
5
7
8
9

Цикл for / of (ES6) - работает с итерируемыми объектами

Пример работы цикла по подсчёту суммы элементов массива:

Код

let arr = [1, 2, 3, 4, 5], sum = 0;

for (let element of arr) {
  sum += element;
}

console.log(sum); // => 15

Тело цикла запускается по одному разу для каждого эелемента массива arr, а перед каждым выполнением тела цикла переменной element присваивается очередной элемент массива.

Цикл for / in имеет следующий синтаксис:

Код

for (переменная in объект) {
  оператор
}

Например, у нас есть объект с именем obj и нам нужно вывести значения его свойств в консоль:

Код

let obj = {
  a: 3,
  b: 5,
  c: 'Alex'
};

for (let p in obj) {
  console.log(obj[p]);
}

В данном случае p - это переменная, в которую присваиваются имена свойств объекта. Ниже результат работы цикла в консоли:


3
5
Alex


При работе с массивами почти всегда следует использовать цикл for / of, а не for / in


КОММЕНТАРИИ (0)