В Javascript нулевой оператор объединения или оператор «??» может использоваться для определения значений по умолчанию. Давайте посмотрим, как это работает.

В Javascript нулевой оператор объединения или оператор ?? используется для возврата правой части всякий раз, когда левая часть равна null или undefined. Чтобы немного лучше понять, давайте рассмотрим несколько примеров:

// Is set to 0
let x = 0 ?? "hello";
// Is set to goodbye
let y = undefined ?? "goodbye";
// Is set to hello
let z = null ?? "hello";
// Is set to false
let a = false ?? "goodbye";

Оператор нулевого объединения полезен в ситуациях, когда что-то может быть возвращено как null или undefined, и помогает нам усовершенствовать наш код. Например, функция, которая в некоторых случаях возвращает значение undefined, может иметь значение по умолчанию:

let myFunction = (a) => {
    if(a >= 5) {
        return "hello world";
    }
}
// Will return "goodbye world", since `myFunction(4)` returns undefined.
let runFunction = myFunction(4) ?? "goodbye world";

Различия между логическим оператором ИЛИ

В прошлом мы обычно задавали значения по умолчанию в Javascript с помощью логического оператора ИЛИ (||). Он имеет такую ​​же функциональность, поскольку устанавливает значение, если первое значение слева не соответствует определенным критериям. Однако оператор || возвращает правое значение, если левое значение является чем-то ложным, а ложных значений много, как показано в списке ниже. .

Ложные ценности

  • false
  • 0 or -0 or 0n
  • любая пустая строка, т.е. ""
  • null
  • undefined
  • NaN

Поэтому использование оператора || означало бы, что если функция возвращает значение 0, а мы действительно хотим использовать значение 0, мы не сможем этого сделать, поскольку 0 ложно. С нулевым оператором объединения (??) 0 является допустимым значением, поскольку он срабатывает только в том случае, если значение равно null или undefined:

// Is set to 0
let x = 0 ?? 5;
// Is set to 5
let y = 0 || 5;

Точно так же, если строка пуста, оператор || по умолчанию будет использовать правую часть, что не всегда является желаемым поведением. Оператор ?? позволяет избежать этого:

// Is set to ""
let x = "" ?? "default text";
// Is set to "default text"
let x = "" || "default text";

Цепочка нулевого оператора объединения

Также можно связать нулевой оператор объединения, как показано ниже:

// Is set to "default text"
let x = null ?? undefined ?? "default text";

Но вы не можете связать его с логическим оператором ||, если только с круглыми скобками:

// Errors out:
let x = 0 || undefined ?? "default text";
// Returns "default text";
let y = (0 || undefined) ?? "default text";

Вот оно. Спасибо за чтение.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.