JS Basics - Loops & if ... else & switch Flashcards
Цикл “while”
Проверяет условие перед каждой итерацией.
let i = 0;
while (i < 3) { // выводит 0, затем 1, затем 2
alert( i );
i++;
}
Условие while вычисляется и преобразуется в логическое значение.
Фигурные скобки не требуются для тела цикла из одной строки.
Итерация
Одно выполнение тела цикла.
Цикл “do … while”
Цикл сначала выполнит тело, а затем проверит условие condition, и пока его значение равно true, он будет выполняться снова и снова.
let i = 0;
do {
alert( i );
i++;
} while (i < 3);
Такая форма синтаксиса оправдана, если вы хотите, чтобы тело цикла выполнилось хотя бы один раз, даже если условие окажется ложным.
Цикл “for”
for (let i = 0; i < 3; i++) { // выведет 0, затем 1, затем 2
alert(i);
}
- Начало let i = 0
Выполняется один раз при входе в цикл - Условие i < 3
Проверяется перед каждой итерацией цикла. Если оно вычислится в false, цикл остановится. - Тело alert(i)
Выполняется снова и снова, пока условие вычисляется в true. - Шаг i++
Выполняется после тела цикла на каждой итерации перед проверкой условия.
Любая часть for может быть пропущена.
Даже все:
for (;;) {
// будет выполняться вечно
}
«Встроенное» объявление переменной
Когда переменная объявляется прямо в цикле, такие переменные существуют только внутри цикла.
Прерывание цикла: «break»
Мы можем выйти из цикла в любой момент с помощью специальной директивы break.
Сочетание «бесконечный цикл + break» – отличная штука для тех ситуаций, когда условие, по которому нужно прерваться, находится не в начале или конце цикла, а посередине или даже в нескольких местах его тела.
Нельзя использовать справа от оператора „?“.
Директива continue
«Облегчённая версия» break. При её выполнении цикл не прерывается, а переходит к следующей итерации (если условие все ещё равно true).
Её используют, если понятно, что на текущем повторе цикла делать больше нечего.
Директива continue позволяет избегать вложенности.
Нельзя использовать справа от оператора „?“.
Цикл “for … in”
Используется для перебора всех свойств объекта.
for (key in object) {
// тело цикла выполняется для каждого свойства объекта
}
Можно объявлять переменную внутри цикла.
Упорядочение свойств объекта: свойства с целочисленными ключами сортируются по возрастанию, остальные располагаются в порядке создания.
«Целочисленное свойство» объекта
Строка, которая может быть преобразована в целое число и обратно без изменений.
Цикл “for … of”
Способ перебора элементов массива.
let fruits = [“Яблоко”, “Апельсин”, “Слива”];
for (let fruit of fruits) {
alert( fruit );
}
Цикл for..of не предоставляет доступа к номеру текущего элемента, только к его значению.
Инструкция if(…)
Вычисляет условие в скобках и, если результат true, то выполняет блок кода.
Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки.
Инструкция if (…) вычисляет выражение в скобках и преобразует результат к логическому типу.
Таким образом, код при таком условии никогда не выполнится:
if (0) { // 0 is falsy
…
}
…а при таком – выполнится всегда:
if (1) { // 1 is truthy
…
}
Блок «else»
Инструкция if может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.
«else if»
Если нужно проверить несколько вариантов условия используется блок else if. Присутствие блока else в таком случае не является обязательным.
Тернарный оператор “?”
let result = условие ? значение1 : значение2;
Условие можно писать как в скобках, так и без, т.к. оператор “?” имеет низкий приоритет.
Последовательность операторов вопросительного знака ? позволяет вернуть значение, которое зависит от более чем одного условия.
let age = prompt(‘Возраст?’, 18);
let message = (age < 3) ? ‘Здравствуй, малыш!’ :
(age < 18) ? ‘Привет!’ :
(age < 100) ? ‘Здравствуйте!’ :
‘Какой необычный возраст!’;
Конструкция “switch”
Наглядный способ сравнить выражение сразу с несколькими вариантами.
Имеет один или более блок case и необязательный блок default.
let a = 2 + 2;
switch (a) {
case 3:
alert( ‘Маловато’ );
break;
case 4:
alert( ‘В точку!’ ); // сработавший case
break;
case 5:
alert( ‘Перебор’ );
break;
default:
alert( “Нет таких значений” );
}
Обязательно ставить break, если break нет, то выполнение пойдёт ниже по следующим case, при этом остальные проверки игнорируются.
И switch и case допускают любое выражение в качестве аргумента.
Несколько вариантов case, использующих один код, можно группировать, break в таком случае ставится только в конце общего кодового блока.
Проверка на равенство всегда строгая. Значения должны быть одного типа, чтобы выполнялось равенство.