Um desenvolvedor de software está trabalhando com dados num...
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 paranull. - B: Errado. Não há conversão de
Infinitye-InfinityparanulleNaNpara string vazia (""). Todos viramnull. - C: Errado. JSON não suporta
Infinity,-InfinityeNaNcomo 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