Условные операторы
/
логические операторы
Условные операторы: if, '?'
Оператор «if»
Оператор if(...) вычисляет условие в скобках и, если результат true, то выполняет блок кода.
let year = prompt('Когда началась 2 мировая?', '');
if (year == 1939) alert( 'Вы правы!' );Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки:
let year = prompt('Когда началась 2 мировая?', '');
if (year == 1939) {
alert( "Правильно!" );
alert( "Вы такой умный!" );
}if (year == 1939)
alert( "Правильно!" );
alert( "Вы такой умный!" );
!
alert( "Вы такой умный!" );
выполнится не зависимо от if
Преобразование к логическому типу
Оператор if (…) вычисляет выражение в скобках и преобразует результат к логическому типу.
- Число 0, пустая строка "", null, undefined и NaN становятся false. Из-за этого их называют «ложными» («falsy») значениями.
- Остальные значения становятся true, поэтому их называют «правдивыми» («truthy»).
if (0) { // 0 is falsy
...
}if (1) { // 1 is truthy
...
}Код при таком условии никогда не выполнится:
а при таком – выполнится всегда:
Блок «else»
let year = prompt('Когда началась 2 мировая?', '');
if (year == 1939) {
alert( 'Да вы знаток!' );
} else {
alert( 'А вот и неправильно!' ); // любое значение, кроме 1939
}Оператор if может содержать необязательный блок «else» («иначе»). Выполняется, когда условие ложно.
Несколько условий: «else if»
Иногда, нужно проверить несколько вариантов условия. Для этого используется блок else if.
let year = prompt('Когда началась 2 мировая?', '');
if (year < 1939) {
alert( 'Это слишком рано...' );
} else if (year > 1939) {
alert( 'Это поздновато' );
} else {
alert( 'Верно!' );
}Условный оператор „?“
let accessAllowed;
let age = prompt('Сколько вам лет?', '');
if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}
alert(accessAllowed);let result = условие ? значение1 : значение2;let accessAllowed = (age > 18) ? true : falselet age = prompt('Сколько вам лет?', '');
let accessAllowed = age > 18;?
Логические операторы
|| (ИЛИ)
Если какой-либо из аргументов true, он вернёт true, в противоположной ситуации возвращается false.
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // falseif (1 || 0) { // работает как if( true || false )
alert( 'truthy!' );
}let hour = 9;
if (hour < 10 || hour > 18) {
alert( 'Офис закрыт.' );
}ИЛИ «||» находит первое истинное значение
let result = value1 || value2 || value3;- Вычисляет операнды слева направо.
- Каждый операнд конвертирует в логическое значение. Если результат true, останавливается и возвращает исходное значение этого операнда.
- Если все операнды являются ложными (false), возвращает последний из них.
Оператор || выполняет следующие действия:
alert( 1 || 0 ); // 1
alert( true || 'no matter what' ); // true
alert( null || 1 ); // 1 (первое истинное значение)
alert( null || 0 || 1 ); // 1 (первое истинное значение)
alert( undefined || null || 0 ); // 0 (поскольку все ложно)&& (И)
И (&&) возвращает true, если оба аргумента истинны, а иначе – false
alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // falselet hour = 12;
let minute = 30;
if (hour == 12 && minute == 30) {
alert( 'The time is 12:30' );
}Пример с if:
И «&&» находит первое ложное значение
Оператор && выполняет следующие действия:
- Вычисляет операнды слева направо.
- Каждый операнд преобразует в логическое значение. Если результат false, останавливается и возвращает исходное значение этого операнда.
- Если все операнды были истинными, возвращается последний.
alert( 1 && 2 && null && 3 );// null
alert( 1 && 2 && 3 );// 3
Приоритет оператора && больше, чем у ||
- Приоритет оператора И && больше, чем ИЛИ ||, так что он выполняется раньше.
- Таким образом, код a && b || c && d по существу такой же, как если бы выражения && были в круглых скобках: (a && b) || (c && d).
! (НЕ)
alert( !true ); // false
alert( !0 ); // trueОператор принимает один аргумент и выполняет следующие действия:
- Сначала приводит аргумент к логическому типу true/false.
- Затем возвращает противоположное значение.

JS Conditional / logical operators.
By Techno School
JS Conditional / logical operators.
- 28