В JavaScript есть логические операторы: И (обозначается &&), ИЛИ (обозначается ||) и НЕ (обозначается !). Они интерпретируют любое значение как логическое.
Не стоит путать их с побитовыми операторами И, ИЛИ, НЕ, которые тоже есть в JavaScript и работают с числами на уровне битов.
Как и в большинстве других языков, в логических операторах используется «короткий цикл» вычислений. Например, вычисление выражения 1 && 0 && 2 остановится после первого И &&, т.к. понятно что результат будет ложным (ноль интерпретируется как false).
Результатом логического оператора служит последнее значение в коротком цикле вычислений.
Можно сказать и по-другому: значения хоть и интерпретируются как логические, но то, которое в итоге определяет результат, возвращается без преобразования.
Например:
alert( 0 && 1 ); // 0
alert( 1 && 2 && 3 ); // 3
alert( null || 1 || 2 ); // 1
Подробнее: Логические операторы.
Циклы
Поддерживаются три вида циклов:
// 1
while (условие) {
...
}
// 2
do {
...
} while(условие);
// 3
for (var i = 0; i < 10; i++) {
...
}
Переменную можно объявлять прямо в цикле, но видна она будет и за его пределами.
Поддерживаются директивы break/continue для выхода из цикла/перехода на следующую итерацию.
Для выхода одновременно из нескольких уровней цикла можно задать метку.
Синтаксис: «имя_метки:», ставится она только перед циклами и блоками, например:
outer:
for(;;) {
...
for(;;) {
...
break outer;
}
}
Переход на метку возможен только изнутри цикла, и только на внешний блок по отношению к данному циклу. В произвольное место программы перейти нельзя.