Resumo : neste tutorial, você aprenderá sobre o operador de coalescência nula do JavaScript ( ??
) que aceita dois valores e retorna o segundo valor se o primeiro for null
ou undefined
.
Introdução ao operador de coalescência nula JavaScript
ES2020 introduziu o operador de coalescência nulo indicado pelos pontos de interrogação duplos ( ??
). O operador coalescente nulo é um operador lógico que aceita dois valores:
value1 ?? value2
O operador de coalescência nulo retorna o segundo valor ( value2
) se o primeiro valor ( value2
) for null
ou undefined
. Tecnicamente, o operador coalescente nulo é equivalente ao seguinte bloco:
const result = value1;
if(result === null || result === undefined) {
result = value2;
}
Linguagem de código: JavaScript ( javascript )
Um valor nulo é um valor que é null
ou undefined
.
O exemplo a seguir usa o operador de coalescência nulo ( ??
) para retornar a string 'John'
porque o primeiro valor é null
:
const name = null ?? 'John';
console.log(name); // 'John'
Linguagem de código: JavaScript ( javascript )
E este exemplo retorna 28
porque o primeiro valor é undefined
:
const age = undefined ?? 28;
console.log(age);
Linguagem de código: JavaScript ( javascript )
Por que anular o operador coalescente
Ao atribuir um valor padrão a uma variável , você geralmente usa o operador lógico OR ( ||
). Por exemplo:
let count;
let result = count || 1 ;
console.log(result); // 1
Linguagem de código: JavaScript ( javascript )
Neste exemplo, a count
variável é undefined
, ela é forçada a false
. Portanto, result
é 1
.
No entanto, o operador lógico OR
( ||
) às vezes é confuso se você considerar 0
strings vazias ''
como um valor válido como este:
let count = 0;
let result = count || 1;
Linguagem de código: JavaScript ( javascript )
O resultado é 1, não 0, o que você pode não esperar.
O operador de coalescência nulo ajuda você a evitar essa armadilha. Ele só retorna o segundo valor quando o primeiro é null
ou undefined
.
O operador coalescente nulo está em curto-circuito
Semelhante aos operadores lógicos OR e AND , o operador de coalescência nulo não avalia o segundo valor se o primeiro operando não for nem undefined
nem null
.
Por exemplo:
let result = 1 ?? console.log('Hi');
Linguagem de código: JavaScript ( javascript )
Neste exemplo, o operador ??
não avalia a segunda expressão que exibe “Hi” para o console porque o primeiro valor é 1
, que não é null
ou undefined
.
O exemplo a seguir avalia a segunda expressão porque a primeira é undefined
:
let result = undefined ?? console.log('Hi');
Linguagem de código: JavaScript ( javascript )
Saída:
'Hi'
Linguagem de código: JavaScript ( javascript )
Encadeamento com o operador AND ou OR
A SyntaxError
ocorrerá se você combinar o operador lógico AND ou OR diretamente com o operador de coalescência nulo como este:
const result = null || undefined ?? 'OK'; // SyntaxError
Linguagem de código: JavaScript ( javascript )
No entanto, você pode evitar esse erro colocando a expressão à esquerda do ??
operador entre parênteses para especificar explicitamente as precedências do operador:
const result = (null || undefined) ?? 'OK';
console.log(result); // 'OK'
Linguagem de código: JavaScript ( javascript )
Resumo
- O operador coalescente nulo (
??
) é um operador lógico que aceita dois valores e retorna o segundo valor se o primeiro fornull
ouundefined
. - O operador coalescente nulo está em curto-circuito e não pode ser combinado diretamente com o operador lógico AND ou OR.