Em JavaScript, o operador de atribuição de coalescência nula, também conhecido como “operador de fusão nula”, é uma adição relativamente recente à linguagem, introduzida no ECMAScript 2020. Este operador é representado por dois sinais de interrogação juntos (??). Sua principal finalidade é fornecer uma maneira concisa e elegante de atribuir um valor padrão a uma variável caso o valor original seja null ou undefined.
Antes da introdução do operador de coalescência nula, era comum usar o operador condicional ternário (? :) ou operadores lógicos como o operador OR (||) para alcançar um resultado semelhante. No entanto, essas abordagens podem ter limitações e não serem tão expressivas quanto o operador de coalescência nula.
O operador de coalescência nula pode ser utilizado em diversas situações, tais como inicializar variáveis com valores padrão, fornecer valores de retorno em funções, acessar propriedades de objetos aninhados de forma segura, entre outros cenários.
Uma das principais vantagens do operador de coalescência nula é sua capacidade de lidar com valores null e undefined de forma explícita e direta. Por exemplo, considere o seguinte trecho de código:
javascriptlet valorPadrao = valorOriginal ?? valorAlternativo;
Neste exemplo, valorPadrao receberá o valor de valorOriginal se valorOriginal não for null ou undefined. Caso contrário, valorPadrao será definido como valorAlternativo. Esta operação é especialmente útil quando se trabalha com dados provenientes de fontes externas, como APIs, onde os valores podem ser imprevisíveis.
Outro cenário comum de uso do operador de coalescência nula é na verificação de propriedades aninhadas em objetos. Por exemplo:
javascriptlet nome = pessoa?.endereco?.cidade ?? 'Cidade Desconhecida';
Neste caso, se a propriedade endereco ou cidade estiverem ausentes ou forem null ou undefined, o valor padrão 'Cidade Desconhecida' será atribuído à variável nome. Isso ajuda a evitar erros de “Cannot read property ‘x’ of undefined” que podem ocorrer ao acessar propriedades de objetos aninhados.
Além disso, o operador de coalescência nula pode ser encadeado para fornecer uma lógica mais robusta de tratamento de valores nulos ou indefinidos em múltiplos níveis de profundidade.
É importante notar que o operador de coalescência nula retorna o primeiro operando se ele não for null ou undefined. Caso contrário, ele retorna o segundo operando, mesmo que este último seja null ou undefined. Isso significa que valores vazios, como 0, false ou '' (string vazia), não são tratados como nulos ou indefinidos pelo operador de coalescência nula.
Por fim, é fundamental entender que o operador de coalescência nula é suportado em navegadores modernos e em ambientes Node.js mais recentes. No entanto, ao desenvolver para ambientes que possam não suportar essa funcionalidade, é necessário utilizar polyfills ou estratégias de transpilação para garantir a compatibilidade com versões mais antigas da linguagem.
“Mais Informações”

Claro, vou fornecer mais informações detalhadas sobre o operador de coalescência nula em JavaScript.
Funcionamento do Operador de Coalescência Nula:
O operador de coalescência nula (??) funciona da seguinte forma:
-
Se o primeiro operando não for
nullouundefined, ele será retornado.- Isso significa que se o valor do primeiro operando for qualquer coisa diferente de
nullouundefined, ele será considerado como o resultado da expressão e o segundo operando não será avaliado.
- Isso significa que se o valor do primeiro operando for qualquer coisa diferente de
-
Se o primeiro operando for
nullouundefined, o segundo operando será retornado.- Se o valor do primeiro operando for
nullouundefined, o operador retornará o valor do segundo operando, independentemente de seu valor sernull,undefinedou qualquer outro valor.
- Se o valor do primeiro operando for
Uso em Inicialização de Variáveis:
O operador de coalescência nula é frequentemente utilizado para inicializar variáveis com um valor padrão, especialmente quando os valores originais podem ser nulos ou indefinidos. Por exemplo:
javascriptlet usuario = nomeUsuario ?? 'Convidado';
Neste exemplo, se nomeUsuario for null ou undefined, o valor da variável usuario será definido como 'Convidado'.
Tratamento de Valores de Retorno em Funções:
Também é comum usar o operador de coalescência nula para fornecer valores de retorno padrão em funções. Por exemplo:
javascriptfunction obterIdade(usuario) {
return usuario.idade ?? 18;
}
Se o objeto usuario não tiver a propriedade idade definida ou se for null ou undefined, a função retornará 18 como idade padrão.
Acesso a Propriedades de Objetos Aninhados de Forma Segura:
O operador de coalescência nula também pode ser utilizado para acessar propriedades aninhadas em objetos de forma segura. Por exemplo:
javascriptlet endereco = usuario?.endereco?.rua ?? 'Endereço Desconhecido';
Neste caso, se usuario ou endereco forem null ou undefined, ou se a propriedade rua não estiver definida, o valor 'Endereço Desconhecido' será atribuído à variável endereco.
Encadeamento de Operadores de Coalescência Nula:
O operador de coalescência nula pode ser encadeado para lidar com casos mais complexos de valores nulos ou indefinidos em múltiplos níveis de profundidade. Por exemplo:
javascriptlet valor = objeto?.propriedade1?.subpropriedade?.metodo?.() ?? valorPadrao;
Neste exemplo, se qualquer uma das propriedades ou métodos encadeados for null ou undefined, o valor padrão valorPadrao será utilizado.
Compatibilidade e Transpilação:
É importante observar que o operador de coalescência nula foi introduzido no ECMAScript 2020 e, portanto, pode não ser suportado em todas as versões de navegadores ou ambientes Node.js mais antigos. Para garantir a compatibilidade, é recomendável verificar a compatibilidade do navegador e, se necessário, utilizar polyfills ou estratégias de transpilação, como Babel, para converter o código para uma forma compatível com versões anteriores do JavaScript.
Conclusão:
Em resumo, o operador de coalescência nula (??) é uma adição bem-vinda ao JavaScript, oferecendo uma maneira concisa e expressiva de lidar com valores nulos ou indefinidos. Sua capacidade de fornecer valores padrão de forma eficiente e segura torna-o uma ferramenta poderosa para desenvolvedores, especialmente ao lidar com dados provenientes de fontes externas ou ao acessar propriedades de objetos aninhados.

