Что означает двойной знак вопроса "??" в выражении? — Q&A Хекслет
2026-02-26 18:24 Diff

Не могли бы Вы объяснить вот эту строку: return this.url.searchParams.get(key) ?? defaultValue;

Ответы

Дополню:

  • Оператор ?? — это nullish coalescent. Он отдает правое от себя значение, если слева от него Nullish value (то есть Null или undefined)
  • Есть ещё оператор || — это логическое ИЛИ. Он отдает правое от себя значение, если слева от него Falsy value (то есть Null, undefined, false, 0, NaN или пустая строка)

Двойной знак вопроса позволяет задать другое значение, если выражение слева от знаков ?? ложное. Например:

Переменная age равна 23, потому что в объекте user нет ключа age. Выражение слева от знаков ?? ложное, поэтому выполняется выражение справа от знаков и результат выражения присваивается в переменную. Если выражение слева вернёт истинное выражение, то справа выражение выполняться не будет:

Ключ age в объекте есть, поэтому выражение справа от ?? не выполнилось, функция getDefault() не вызывалась, а в переменную age присвоился результат выражения user.age.