O operador de coalescência nula (??
) é um operador lógico que retorna o operando do lado direito caso o valor do operando do lado esquerdo seja null
ou undefined
. Caso contrário, retorna o operando do lando esquerdo.
Diferente do operador lógico OR (||
), o operando do lado esquerdo é retornado caso seja um valor falsy que não seja null
ou undefined
.
Atribuindo valor padrão à uma variável
Antes, quando você queria atribuir um valor padrão à uma variável, era comum se deparar com algum código como esse:
let foo = 0;
...
const defaultNumber = 42;
console.log(output || defaultNumber); // expected output: 42
O problema com essa abordagem é que caso você considere zero (0
) ou uma string vazia (''
) como válidos, você terminaria com um comportamento indesejado aqui.
Utilizando o operador de coalescência nula, a história muda.
let foo = 0;
let bar;
...
const defaultNumber = 42;
console.log(foo ?? defaultNumber); // expected output: 0
console.log(bar ?? defaultNumber); // expected output: 42
Encadeando com os operadores OR (||
) e AND (&&
)
O operador ??
não pode ser encadeado diretamente com os operadores ||
e &&
. Caso isso aconteça, você vai terminar com um SyntaxError
sendo lançado:
null || undefined ?? 'default'; // lança um SyntaxError
Para corrigir isso você deve envolver a expressão em parênteses para explicitamente indicar a precedência:
(null || undefined) ?? 'default'; // 'default'
Relação com o operador de encadeamento opcional (?.
)
O operador ??
trata os especificamente os valores null
e undefined
, assim como o operador de encadeamento opcional (?.
), que é usado para acessar propriedades de um objeto que podem ser null
ou undefined
.
Top comments (0)