JavaScriptFunçõesintermediario

Memoização

Em aplicações reais, funções caras (como cálculos matemáticos ou consultas a APIs) podem ser chamadas repetidamente com os mesmos argumentos. A memoização evita refazer o trabalho, armazenando resultados anteriores num cache. Isso melhora performance e respostas mais rápidas — essencial em processamento de dados, jogos ou renderização de componentes.

O PROBLEMA

Crie memoizar(fn) que recebe uma função e retorna versão com cache.

EXEMPLO

const calcMemo = memoizar(calcLento);
calcMemo(5) → 25
calcMemo(5) → "do cache!" → 25

SOBRE O CONCEITO

A memoização usa closures para manter um objeto cache privado que persiste entre chamadas. Ao invocar a função memoizada, você gera uma chave a partir dos argumentos (com ...rest) e verifica se o resultado já está no cache. Se sim, retorna o valor armazenado; senão, executa a função original, guarda o resultado e o retorna. Erro comum é o cache não persistir — isso acontece quando a variável cache é recriada a cada chamada, geralmente por estar dentro da função retornada sem closure. Outro erro é chave incorreta: usar apenas o primeiro argumento ou converter mal os argumentos. A solução é usar JSON.stringify nos argumentos ou concatená-los com um separador. Com ...rest, você captura todos os parâmetros como array e os serializa para chave única.

RESOLUÇÃO

Mais exercícios de Funções

JSF019 · IntermediárioComposição de funçõesJSF020 · IntermediárioIIFEJSF022 · AvançadoGenerator functionJSF023 · AvançadoFunção pura vs impura
Ver todos os exercícios de JavaScript