Объясните оператор нулевого объединения (Nullish Coalescing Operator)?
Оператор нулевого объединения, представленный в JavaScript/TypeScript в ECMAScript 2020, позволяет вам управлять значениями переменных, которые могут быть null
или undefined
. Он полезен для установки значений по умолчанию, если переменная имеет одно из этих значений.
Синтаксис
Синтаксис оператора включает двойной знак вопроса ??
:
let result = value1 ?? value2;
В этом примере, если value1
равно null
или undefined
, то result
примет значение value2
. В противном случае result
будет равен value1
.
Примеры использования
Рассмотрим несколько примеров:
let userName: string | null | undefined;
// case 1: userName is null
userName = null;
let finalUserName1 = userName ?? "Guest"; // finalUserName1 будет "Guest"
// case 2: userName is undefined
userName = undefined;
let finalUserName2 = userName ?? "Guest"; // finalUserName2 будет "Guest"
// case 3: userName is an empty string
userName = "";
let finalUserName3 = userName ?? "Guest"; // finalUserName3 будет "" (пустая строка, потому что это не null и не undefined)
// case 4: userName is "Alice"
userName = "Alice";
let finalUserName4 = userName ?? "Guest"; // finalUserName4 будет "Alice"
Почему использовать ??
вместо ||
?
Важно понимать различия между ??
и логическим оператором ||
. Оператор ||
возвращает первое истинное значение, а это значит, что он будет рассматривать 0
, ""
(пустую строку), NaN
и другие ложные значения как значение, для которого нужно установить значение по умолчанию. В отличие от него, ??
учитывает только null
и undefined
.
Пример различий:
let count = 0;
// используя ||
let result1 = count || 10; // result1 будет 10, так как 0 — ложное значение
// используя ??
let result2 = count ?? 10; // result2 будет 0, так как count не null или undefined
Заключение
Оператор нулевого объединения упрощает проверку значений и позволяет более безопасно назначать значения по умолчанию. Это особенно полезно, когда вы работаете с данными, которые могут отсутствовать или не инициализироваться.
Теперь, когда вы знаете о операторе нулевого объединения, вы можете использовать его в своих проектах для упрощения обработки данных и повышения читаемости кода!