Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Exemplos das implicações em relação ao Object null

Olá, boa noite!

Gostaria de saber se existe alguns casos de problemas em códigos por causa do null ser um objeto na linguagem.

9 respostas

Olá Ricardo, tudo bem?

Depende, sendo um resultado esperando, ou seja, que pode ocorrer por algum motivo, por exemplo, o retorno de uma api que retorna null. Sabendo que existe a possibilidade de ocorrer, o programador deve prevenir possíveis falhas, por exemplo no front-end.

Oi Anderson, a minha dúvida na verdade é em ter algum problema por o null ser do tipo objeto. Queria algum exemplo real, mas mesmo assim, obrigado pelo retorno.

solução!

Olá Ricardo!

O fato de null ser um dado do tipo Object em JavaScript não irá causar problemas no código por si mesmo, mas sim quando há divergência na checagem de tipo.

Isso porque, "computacionalmente" falando, null não deveria ser um objeto mas sim um tipo primitivo próprio. Este é um dos bugs mais famosos do JavaScript, que não teve como ser consertado em versões posteriores pela particularidade do JavaScript de ser uma linguagem interpretada no lado "cliente" da requisição. Se quiser, você pode conferir nesse post (em inglês) uma explicação interessante sobre a implementação em C do código.

Assim, devs que venham de outras linguagens podem não estar a par disso e tentar validar null utilizando typeof null === "null", o que retornaria false; ao contrário do caso typeof undefined === "undefined" que retornaria true.

Um exemplo real, como você perguntou, seria a validação de campos em um JSON retornado de uma API. Dependendo da API e de como o JSON é retornado, podem existir campos com valor null (por exemplo, campos não obrigatórios que não tenham nenhum dado). Quando o frontend vai consumir estes dados, precisa validar se todos os campos têm informações antes de exibir na tela, pois seria bem estranho para o usuário receber null onde espera ver alguma informação (embora isso às vezes aconteça!). Quem está desenvolvendo o código dessa validação tem que ter esse "bug do null" em mente, para que não tente, por exemplo, fazer algo do tipo:

// verificar se algum campo de uma API é null

if (typeof retornoAPI.campo === "null") {
  // código
}

O que sempre retornará false independente do valor do campo ser null ou não.

Por causa desse bug, não é ideal fazer a verificação de valores null usando o typeof, pois muitas coisas em JavaScript são "object", inclusive arrays; você pode ver aqui a tabela com os possíveis retornos do operador typeof. Ao invés disso, você pode utilizar o operador de igualdade estrita === ou operador de não-igualdade estrita !==:

const varNula = null;
const texto = "Alura";

console.log(varNula === null); //true
console.log(texto !== null); //true

Lembrando que null é considerado um valor falsy pelo JavaScript, então é importante forçar sempre a comparação por tipo e valor usando === e !==, ao invés de == e !=.

Bons estudos ;)

Boa noite, Juliana!

Explicação melhor não há. Muito obrigado pelo esclarecimento, você é uma excelente instrutora!

Boa noite, Juliana!

Explicação melhor não há. Muito obrigado pelo esclarecimento, você é uma excelente instrutora!

Boa noite, Juliana!

Explicação melhor não há. Muito obrigado pelo esclarecimento, você é uma excelente instrutora!

Boa noite, Juliana!

Explicação melhor não há. Muito obrigado pelo esclarecimento, você é uma excelente instrutora!