Blog Formação DEV

Entenda o operador de coalescência nula (??) – JavaScript

Se você usa JavaScript já deve ter visto o operador "??" em uma expressão. Esse é o operador de coalescência nula, mas o que ele faz? Quando e onde utilizar? Essas perguntas serão respondidas neste artigo.
Entenda o operador de coalescência nula (??) – JavaScript
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.

Leia também:

NVM – Instalação e utilização

Referência – MDN

Sobre o autor
Cod3r

Cod3r

Com mais de 400 mil alunos, a Cod3r é uma das principais escolas de tecnologia do País. Um de seus produtos mais importantes é a Formação DEV, com objetivo de preparar os profissionais para o mercado.

Ótimo! Inscreveu-se com sucesso.

Bem-vindo de volta! Registou-se com sucesso.

Assinou com sucesso o Blog Formação DEV .

Sucesso! Verifique o seu e-mail para obter o link mágico para se inscrever.

As suas informações de pagamento foram atualizadas.

Seu pagamento não foi atualizado.