нулевой оператор объединения

Как работает нулевой оператор объединения в JavaScript

5 (100%) 1 vote[s]

Нулевой оператор объединения был добавлен в ES11, который обозначен двойными вопросительными знаками, например: ??. В этой статье мы узнаем, почему это так полезно и как его использовать.



Исходная информация

В JavaScript есть логический оператор короткого замыкания ИЛИ ||. Он возвращает первое истинное значение.

Другими словами, операторы && и || («короткое замыкание») не оценивают правую сторону, если это не обязательно.

Ниже приведены единственные шесть значений, которые считаются ложными в JavaScript:

    • false
    • undefined
    • null
    • "" (empty string)
    • NaN
    • 0

Так что, если чего-либо нет в приведенном выше списке, это будет считаться истинным значением.

Значения истинности и ложности — это небулевы значения, которые приводятся к  false  или  true при выполнении определенных операций.

const value1 = 1;
const value2 = 23;

const result = value1 || value2; 

console.log(result); // 1

Поскольку оператор || возвращает первое истинное значение, в приведенном выше коде результатом будет значение, сохраненное в value1, которое равно 1.

Если  value1 является  null,  undefined, empty или любым другим ложным значением, то следующий операнд после оператора || будет вычислен, и это будет результатом общего выражения:

const value1 = 0;
const value2 = 23;
const value3 = "Hello";

const result = value1 || value2 || value3; 

console.log(result); // 23

Здесь, поскольку  value1 равно 0, будет проверяться  value2 . Поскольку это истинное значение, результатом всего выражения будет  value2.

Проблема с || заключается в том, что он не делает различий между false , 0 , пустой строкой ""NaN , null и undefined . Все они считаются ложными.

Если любой из них является первым операндом || , то в результате мы получим второй операнд.

Зачем JavaScript нужен нулевой оператор объединения

Оператор || отлично работает, но иногда мы хотим, чтобы вычислялось только следующее выражение, когда первый операнд либо равен  null или undefined.

Поэтому в ES11 добавлен нулевой оператор объединения.

В выражении x ?? у:

  • Если x имеет значение  null или undefined, тогда будет только у.
  • Если x не равен null или undefined, результатом будет x.

Это упростит проверку условий и отладку кода.

Попробуйте сами:

let result = undefined ?? "Hello";
console.log(result); // Hello

result = null ?? true; 
console.log(result); // true

result = false ?? true;
console.log(result); // false

result = 45 ?? true; 
console.log(result); // 45

result = "" ?? true; 
console.log(result); // ""

result = NaN ?? true; 
console.log(result); // NaN

result = 4 > 5 ?? true; 
console.log(result); // false поскольку 4 > 5 оценивается как false

result = 4 < 5 ?? true;
console.log(result); // true поскольку 4 < 5 оценивается как true

result = [1, 2, 3] ?? true;
console.log(result); // [1, 2, 3]

Итак, из всех приведенных выше примеров ясно, что результат операции x ?? y является  y только тогда, когда  x  либо  undefined, либо null.

Во всех остальных случаях результатом операции всегда будет x.

Начиная с ES6, в JavaScript есть много полезных дополнений, например Promises, Async/await.

Читайте больше по теме:

Подписаться
Уведомление о
guest
0 комментариев
Inline Feedbacks
View all comments
Просмотры: 104

Популярные записи