Fala, pessoal. Tudo bem? Hoje nós vamos falar sobre o operador de coalescência nula.
Primeiramente, para entendermos o operador de coalescência nula (??), precisamos de uma breve introdução.
Talvez, em algum momento do seu estudo ou trabalho, você tenha se deparado com um código parecido com este:
let qualquerValor;
let valor = qualquerValor || "Valor Padrão";
console.log(valor); // Valor Padrão
O operador ||
é chamado de OU lógico, e ele funciona da seguinte maneira: se a variável qualquerValor tiver um valor associado, a variável valor receberá esse valor que estava na variável qualquerValor. No entanto, se ela não tiver nenhum valor, a variável valor receberá o valor da direita ou seja, receberá o valor que está depois do operador ||
, que servirá como um valor padrão.
Qual o problema disso?
Se você está familiarizado com JavaScript, você já deve saber que existem vários “problemas” 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
Ou seja, se nós atribuirmos um valor 0 (zero) para a variável qualquerValor, e fôssemos seguir a lógica, era para o valor 0 (zero) ser atribuído a variável valor correto? No entanto, não é bem o que acontece, veja:
let qualquerValor = 0;
let valor = qualquerValor || "Valor Padrão";
console.log(valor); // Valor Padrão
O valor padrão ainda está sendo associado a variável valor apesar de ter uma valor associado a variável qualquerValor (zero) o mesmo foi considerado como false, e é exatamente ai que entra o operador de coalescência nula.
O operador de coalescência nula (??)
Agora que você já entendeu o problema, vamos entender a solução:
let qualquerValor = 0;
let valor = qualquerValor ?? "Valor Padrão";
console.log(valor); // 0
Assim sendo, nesse caso, ao usar o operador ??
ao invés de ||
, se o valor da variável for null
ou undefined
, a variável valor receberá Valor Padrão. Caso contrário, ela receberá o valor da variável qualquerValor.
Conclusão
Os exemplos acima são bem simples, mas o operador de coalescência nula pode ser muito útil em diversas outros casos, por exemplo, você fez um consulta no banco e não quer que essa variável que vai receber o resultado da consulta seja null ou undefined. Portanto, neste caso, o operador ??
vai ser uma ótima escolha de uso.
Eu fico por aqui, um abraço e até a próxima!
Leia também: