7.7.3 - Funções
🧠 Funções Ninja: Conceitos Avançados em JavaScript! 🥷
🧠 Funções Ninja: Conceitos Avançados em JavaScript! 🥷
Você já domina o básico, agora é hora de ir além! Vamos descobrir como funções podem se comportar de formas mais complexas (e super úteis) no JavaScript. Preparado para o próximo nível? ⚔️
😶 Funções anônimas
São funções sem nome. Muito usadas quando você não precisa reutilizar a função depois.
setTimeout(function() {
console.log("Executando depois de 2 segundos");
}, 2000);Também podem ser guardadas em variáveis:
const digaOi = function() {
console.log("Oi!");
};🧩 Funções dentro de funções
Sim, você pode declarar uma função dentro de outra!
function saudacao(nome) {
function montarMensagem() {
return "Olá, " + nome + "!";
}
return montarMensagem();
}
console.log(saudacao("Maya")); // Olá, Maya!💡 Isso é útil para organizar tarefas e proteger variáveis do escopo externo.
🔐 Closures (fechamentos)
Closures são funções que lembram do lugar onde foram criadas. Elas "guardam" o escopo mesmo depois que a função externa acabou!
⚠️ Muito usado em funções que precisam guardar estado entre chamadas.
⬆️ Hoisting: puxando pra cima
Funções declaradas com function nome() são “elevadas” ao topo do código.
Mas expressões de função não são hoisted:
⏰ setTimeout e setInterval
setTimeout e setInterval⏱ setTimeout: executa depois de um tempo
setTimeout: executa depois de um tempo⏳ setInterval: executa repetidamente
setInterval: executa repetidamente⚠️ Use com cuidado para evitar loops infinitos ou sobrecarga.
📞 Callback: passando funções como argumentos
Funções podem ser passadas como parâmetros para outras funções!
🔁 Muito usado em animações, interações com o usuário, e código assíncrono.
🔁 Recursão: quando a função chama ela mesma
⚠️ Use com condição de parada, senão o navegador pode travar 😅
📚 Funções já prontas (pré-definidas)
O JavaScript vem com várias funções embutidas:
parseInt()
Converte string em número inteiro
parseFloat()
Converte string em número com decimais
isNaN()
Verifica se algo não é número
setTimeout()
Executa depois de um tempo
setInterval()
Executa várias vezes com intervalo
alert()
Mostra mensagem na tela
🧱 Function constructor: use com cuidado!
Function constructor: use com cuidado!Você pode criar funções com new Function(...), mas isso é raro e perigoso, porque executa código como texto (pode ser inseguro e difícil de debugar).
⚠️ Evite em código real! Só use se sabe exatamente o que está fazendo.
👜 Objeto arguments: acesso a todos os argumentos
arguments: acesso a todos os argumentosMesmo sem declarar parâmetros, você pode usar arguments para acessar todos os valores passados:
🧠 Hoje em dia, o
...resté mais moderno e recomendado. Masargumentsainda aparece em códigos antigos.
⚖️ Comparando formas de criar funções
Declaração
function f() {}
Hoisting, nome obrigatório
Expressão
const f = function() {}
Sem hoisting, função anônima
Arrow
const f = () => {}
Curta, não tem this próprio
Function constructor
new Function("x", "return x+1")
Evite! Executa strings como código
🧠 Dicas avançadas pra mandar bem:
Use
arrow functionspara funções pequenas e simples.Use nomes claros para entender melhor seu próprio código no futuro.
Evite recursões profundas sem motivo — use com moderação.
Não abuse de funções dentro de funções, senão o código pode ficar confuso.
Evite o uso de
Function()eargumentsem projetos novos — existem formas mais modernas!
🧪 Desafio avançado:
Crie uma função
repetirque recebe uma função de callback e a quantidade de vezes que ela deve ser executada.Teste com um callback que imprime
"Olá"no console.
🎯 Conclusão
Parabéns! 🎉 Agora você já tem uma visão poderosa do que funções podem fazer no JavaScript. Saber disso te permite criar, organizar e controlar tudo no seu código com mais confiança.
✨ “Funções são como ferramentas mágicas: quando você entende cada tipo e como usá-las, o impossível vira possível!”
Atualizado


