JavaScriptFunçõesdesafio

Analisador de código funcional

Em aplicações reais, às vezes você precisa inspecionar funções de forma programática — por exemplo, em um framework de testes que conta parâmetros automaticamente ou em uma ferramenta que analisa a complexidade do código. Dominar function.length e toString() permite extrair metadados das funções sem precisar de bibliotecas externas, um truque útil para quem constrói ferramentas de desenvolvimento.

O PROBLEMA

Analise array de funções: contar parâmetros, detectar puras, ordenar por complexidade.

EXEMPLO

analisar([somar, ehPar, saudar]) → [{nome:'somar',params:2},...]

SOBRE O CONCEITO

O exercício explora meta-programação: usar function.length para obter o número de parâmetros formais (obrigatórios) e toString() para examinar o corpo da função. O erro comum é achar que length conta parâmetros com valor padrão (function(a, b = 1)) — na verdade, ele para no primeiro parâmetro com valor padrão, ignorando os seguintes. Com toString(), você pode verificar se a função tem efeitos colaterais (por exemplo, se chama console.log internamente) e classificá-la como pura ou impura. O exercício proíbe loops (for, while) e var, forçando o uso de métodos funcionais como map, filter e sort. A saída deve ser um array de objetos com propriedades como nome e params, obtidos através da iteração sobre as funções fornecidas.

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