В 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
or0n
- любая пустая строка, т.е.
""
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 и присоединитесь к нашему Коллективу талантов.