# ЖабаСкрипт. Конспект 5

By [Nemo](https://paragraph.com/@nemo-3) · 2022-07-20

---

Условная конструкция
--------------------

### Оператор if

Инструкция `if(...)` вычисляет условие в скобках и, если результат `true`, то выполняет блок кода в фигурных скобках `{…}`.

    if (10 > 1) 
    {
      alert('Правда');
    }
    if (10 < 1) 
    {
      alert('Ложь');
    }
    if (10 == 10) 
    {
      alert('Правда');
    }
    

### Блок else

Инструкция `if` может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.

    if (10 > 1) 
    {
      alert('Правда');
    }
    else 
    {
      alert('Ложь');
    }
    

### Несколько условий: «else if»

Если нужно проверить несколько вариантов условия, то для этого используется блок `else if`.

    if (10 > 1) 
    {
      alert('10 > 1');
    }
    else if (10 < 1) 
    {
      alert('10 < 1');
    }
    else if (10 == 1) 
    {
      alert('10 == 1');
    }
    // Выведет 10 > 1
    

### Тернарный оператор

Тернарный оператор имеет следующий синтаксис

    let result = условие ? значение1 : значение2;
    

Сначала вычисляется `условие`: если оно истинно, тогда возвращается `значение1`, в противном случае – `значение2`.

    let accessAllowed = (age > 18) ? true : false;
    

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

В JavaScript есть четыре логических оператора: `||` (ИЛИ), `&&` (И) и `!` (НЕ), `??` (Оператор нулевого слияния).

### || (ИЛИ)

    alert( true || true );   // true
    alert( false || true );  // true
    alert( true || false );  // true
    alert( false || false ); // false
    

Использование `||`

\*\*1. Получение первого истинного значения из списка переменных или выражений. \*\*Цепочка ИЛИ `||` возвращает первое истинное значение или последнее, если такое значение не найдено.

    let currentUser = null;
    let defaultUser = "John";
    let name = currentUser || defaultUser || "unnamed";
    
    alert( name ); // выбирается "John" – первое истинное значение
    

**2.** **Сокращённое вычисление.**

ИЛИ `||` вычисляет их слева направо. Вычисление останавливается при достижении первого истинного значения. Этот процесс называется «сокращённым вычислением», поскольку второй операнд вычисляется только в том случае, если первого недостаточно для вычисления всего выражения.

    let x;
    true || (x = 1);
    alert(x); // undefined, потому что (x = 1) не вычисляется
    false || (x = 1);
    alert(x); // 1
    

### && (И)

    alert( true && true );   // true
    alert( false && true );  // false
    alert( true && false );  // false
    alert( false && false ); // false
    

И «&&» находит первое ложное значение

### ! (НЕ)

    alert( !true ); // false
    alert( !0 ); // true
    

Двойное НЕ `!!` используют для преобразования значений к логическому типу. Равносильно функции Boolean(value):

    alert( !!"non-empty string" ); // true
    alert( !!null ); // false
    alert( Boolean("non-empty string") ); // true
    alert( Boolean(null) ); // false
    

### ?? (Оператор нулевого слияния)

Будем считать, что выражение определено, если оно не равно `null` или `undefined`.

Результат выражения `a ?? b` будет следующим:

*   если `a` определено, то `a`,
    
*   если `a` не определено, то `b`.
    

Оператор ?? может быть записано следующим образом:

    result = (a !== null && a !== undefined) ? a : b;
    

Как правило, оператор `??` нужен для того, чтобы задать значение по умолчанию для потенциально неопределённой переменной.

### Ссылки:

[https://learn.javascript.ru/ifelse](https://learn.javascript.ru/ifelse)

[https://learn.javascript.ru/logical-operators](https://learn.javascript.ru/logical-operators)

[https://learn.javascript.ru/nullish-coalescing-operator](https://learn.javascript.ru/nullish-coalescing-operator)

---

*Originally published on [Nemo](https://paragraph.com/@nemo-3/5)*
