Um desenvolvedor de software está trabalhando com dados num...

Próximas questões
Com base no mesmo assunto
Q3508328 Programação
Um desenvolvedor de software está trabalhando com dados numéricos em Javascript, incluindo os valores especiais Infinity, -Infinity, e NaN (Not-a-Number). O desenvolvedor de software precisa converter esses dados para o formato JSON, utilizando a função JSON.stringify(). Ao tentar serializar valores de Infinity, -Infinity, e NaN diretamente como valores em um objeto ou array para uma string JSON utilizando JSON.stringify(), qual será o resultado? 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D - Os valores são convertidos para o valor null.

Tema central: Esta questão aborda o comportamento da função JSON.stringify() em JavaScript ao lidar com valores numéricos especiais: Infinity, -Infinity e NaN. Entender como esses valores são serializados para JSON é fundamental para evitar erros ao transferir dados entre sistemas ou APIs.

Resumo teórico: O formato JSON (JavaScript Object Notation) é uma forma padronizada de representação de dados. Segundo a especificação oficial (ECMA-404), valores válidos em JSON para números são apenas números finitos. Por isso, valores como Infinity, -Infinity e NaN não são válidos.

Em JavaScript, ao usar JSON.stringify() para serializar objetos ou arrays que contenham esses valores como elementos ou propriedades, eles são convertidos automaticamente para null. Por exemplo:

JSON.stringify([Infinity, -Infinity, NaN]) // Resultado: "[null,null,null]"

Justificativa da alternativa correta (D): A documentação oficial do MDN explica que Infinity, -Infinity e NaN são convertidos para null quando serializados como valores de arrays ou objetos. Isso ocorre para manter a conformidade com o padrão JSON, que não permite esses valores.

Análise das alternativas incorretas:

  • A: Errado. JSON.stringify() não lança erro, apenas converte para null.
  • B: Errado. Não há conversão de Infinity e -Infinity para null e NaN para string vazia (""). Todos viram null.
  • C: Errado. JSON não suporta Infinity, -Infinity e NaN como literais; eles não aparecem assim na string.
  • E: Errado. Eles não são convertidos para strings, mas sim para null.

Estratégias de interpretação: Fique atento a pegadinhas que sugerem conversão para string ou lançamento de erro. Sempre que um padrão (como JSON) não aceita certos valores, o mais comum é a conversão para um valor neutro, como null.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

D)

obj = {

  a: Infinity,

  b: -Infinity,

  c: NaN,

};

JSON.stringify(obj)

'{"a":null,"b":null,"c":null}'

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo