Texto de: Marlliton Souza
Introdução
O operador de coalescência nula, introduzido no ES2020, é um operador que recebe dois operandos e que, entre outras coisas, pode ser utilizado para definir valores padrão para variáveis. Nesse artigo, falaremos sobre o problema que levou a sua criação, como ele funciona e como podemos utilizá-lo.
O problema
Em alguns momentos durante seus estudos ou trabalho, você pode encontrar um código semelhante a este:
let nome = "Maria";
let nome2 = nome || "Nome Padrão";
console.log(nome2); O operador || é conhecido como OU lógico e funciona assim: se a variável nome tiver algum valor associado a ela, por exemplo, let nome = "Maria", e atribuirmos esse valor à variável nome2 usando let nome2 = nome || "Nome Padrão", o valor de nome2 será "Maria".

No entanto, se a variável nome não tiver nenhum valor, nome2 receberá o valor à direita do operador ||, ou seja, receberá o valor que está após ||. Nesse caso, "Nome Padrão" será o valor padrão atribuído a variável nome2.

Qual o problema disso?
Se você está familiarizado com JavaScript, você já deve saber que existem algumas “pegadinhas” quanto a questão de falsidade e veracidade de valores, por exemplo:
Valores que são considerados falsos:
- string vazia: “”
- número 0 (zero)
- false
- null
- undefined
- NaN
Valores que são considerados verdadeiros:
- tudo que não for falso.
- Strings que não estejam vazias: "", "0", “true”, "false", etc.
- Todos os números que forem diferentes de 0 (zero): 1, 2, −1, −200, 1/100, etc.
- true
Sabendo disso, vejamos o exemplo abaixo:
let num = 0;
let num2 = num || 32;
console.log(num2); Na teoria, esperaríamos que a variável num2 tivesse o valor zero (0), uma vez que zero é, de fato, um valor. No entanto, ao empregar o operador lógico ||, notamos que o valor padrão utilizado foi 32, e não o 0.

Isso se deve às regras do JavaScript, onde o valor à direita do operador || é escolhido quando o valor à esquerda é considerado falso. Neste contexto, o número 0 é interpretado como falso, levando à seleção do valor 32 como padrão para a variável num2.
O operador de coalescência nula (??)
Existe uma solução muito simples para resolver esse problema, que é fazer uso do operador ?? ao invés do ||.
let qualquerValor = 0;
let valor = qualquerValor ?? "Valor Padrão";
console.log(valor); // 0 O operador ?? é um operador lógico que retorna o seu operando do lado direito quando o seu operador do lado esquerdo é null ou undefined.
Em outras palavras, qualquer coisa que seja diferente de null ou undefined ao lado esquerdo do operador de coalescência nula será retornado. Caso esse valor seja null ou undefined ele retorna o valor a direita.

Conclusão
Os exemplos acima são bem simples, mas o operador de coalescência nula pode ser muito útil em diversos outros casos, por exemplo, você fez uma consulta no banco e não sabe quais dados serão retornados, pois muitos campos são opcionais, você pode usar esse operador para definir valores padrão para esses possíveis campos opcionais.