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

/

логические операторы

Условные операторы: 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 : false
let age = prompt('Сколько вам лет?', '');

let accessAllowed = age > 18;

?

Логические операторы

|| (ИЛИ)

Если какой-либо из аргументов true, он вернёт true, в противоположной ситуации возвращается false.

alert( true || true );   // true
alert( false || true );  // true
alert( true || false );  // true
alert( false || false ); // false
if (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 ); // false
let 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

Оператор принимает один аргумент и выполняет следующие действия:

  1. Сначала приводит аргумент к логическому типу true/false.
  2. Затем возвращает противоположное значение.

JS Conditional / logical operators.

By Techno School

JS Conditional / logical operators.

  • 28