7.7.2 - Funções
🧠 Funções em Detalhes: Segredos, Cuidados e Curiosidades!
🧠 Funções em Detalhes: Segredos, Cuidados e Curiosidades!
Vamos agora entender ainda mais sobre funções, incluindo situações específicas, dúvidas que todo mundo tem no começo e algumas práticas poderosas que só quem conhece bem as funções usa. Bora? 🚀
🌀 E se não tiver return
? Ou se ele estiver sozinho?
return
? Ou se ele estiver sozinho?🔹 Sem return
:
return
:Se sua função não tiver return
, ela não devolve valor nenhum. O resultado será undefined
.
function digaOi() {
console.log("Oi!");
}
let resultado = digaOi();
console.log(resultado); // undefined
🔹 Com return;
sozinho:
return;
sozinho:Ela vai sair da função, mas sem devolver nada.
function sairSemNada() {
return;
}
console.log(sairSemNada()); // undefined
💡 Use
return
quando quiser devolver algo útil da função. Se quiser só executar algo (como mostrar no console), ele pode ser omitido.
⚡ IIFE – Funções que se executam sozinhas!
IIFE significa Immediately Invoked Function Expression – ou seja, uma função que é criada e executada imediatamente, no mesmo momento.
(function () {
console.log("Sou uma função que se autoexecuta! 🚀");
})();
💡 Muito usada para isolar variáveis, evitar conflitos e inicializar scripts.
🧭 Quando usar cada tipo de função?
function nome()
Quando precisa reutilizar várias vezes ou declarar antes de chamar
const nome = function()
Quando quiser guardar a função em variável, útil para funções anônimas
const nome = () => {}
Quando quiser um código mais limpo ou trabalhar com funções pequenas
⚠️ Lembre-se: funções com
function nome()
são "hoisted" — ou seja, você pode chamá-las antes mesmo de declará-las. Já as funções em variáveis só funcionam depois da linha onde foram criadas.
📦 Vários parâmetros? Sem problemas!
Você pode passar quantos parâmetros quiser, separados por vírgula:
function mostrarInfos(nome, idade, cidade) {
console.log(nome + " tem " + idade + " anos e mora em " + cidade + ".");
}
mostrarInfos("Ana", 22, "São Paulo");
💡 Parâmetros extras? Tudo bem!
Se você passar mais argumentos do que parâmetros, os extras são ignorados:
function soma(a, b) {
return a + b;
}
console.log(soma(3, 4, 10, 99)); // Só soma 3 + 4
⚠️ Menos parâmetros?
Se faltar algum argumento, ele vira undefined
.
function saudacao(nome, sobrenome) {
console.log("Olá, " + nome + " " + sobrenome);
}
saudacao("Pedro"); // Olá, Pedro undefined
🧷 Parâmetros padrão
Você pode definir valores padrão para os parâmetros, evitando undefined
:
function saudacao(nome = "amigo") {
console.log("Olá, " + nome);
}
saudacao(); // Olá, amigo
🌊 Spread e Rest: o famoso ...
...
Rest parameters: junta vários argumentos num array
function somarTudo(...numeros) {
return numeros.reduce((a, b) => a + b, 0);
}
console.log(somarTudo(1, 2, 3, 4)); // 10
🧠 Use
...
quando não sabe quantos argumentos vai receber.
🏁 Por que o return
é tão importante?
return
é tão importante?O return
entrega um valor de volta para quem chamou a função. Sem ele, a função só faz algo, mas não responde nada.
function dobro(n) {
return n * 2;
}
let resultado = dobro(5);
console.log(resultado); // 10
Use
return
para cálculos, verificações, ou qualquer coisa que precise de um valor de saída.
🤯 O que é considerado uma função em JavaScript?
Em JavaScript, funções são primeira classe – ou seja, elas podem ser:
Guardadas em variáveis
Passadas como argumentos
Retornadas de outras funções
Guardadas dentro de objetos (métodos)
const executar = () => console.log("Função em variável!");
function recebeFuncao(func) {
func(); // Chama a função recebida
}
recebeFuncao(executar); // Função em variável!
💡 Observação poderosa: Funções de ordem superior ✨
No JavaScript, as funções são “cidadãs de primeira classe” — ou seja, você pode armazenar, passar e retornar funções como se fossem dados comuns.
👉 Isso abre espaço para um conceito muito útil chamado funções de ordem superior.
🧠 O que é isso?
Uma função de ordem superior (higher-order function) é uma função que:
Recebe uma ou mais funções como parâmetro ou
Retorna uma função como resultado
🧪 Exemplo 1: recebendo uma função como parâmetro
function executar(acao) {
acao();
}
executar(() => console.log("Função executada!"));
🔁 Exemplo 2: retornando uma função
function multiplicador(fator) {
return function(numero) {
return numero * fator;
};
}
const vezesDois = multiplicador(2);
console.log(vezesDois(5)); // 10
🧩 Funções de ordem superior são base de muitas ferramentas modernas, como
.map()
,.filter()
,.reduce()
e até de frameworks famosos (como React!).
Elas tornam seu código mais modular, legível e poderoso — como montar LEGO com inteligência! 🧱💡
❌ Cuidados importantes e erros curiosos
1. Não usar return
onde precisa
return
onde precisafunction triplo(n) {
n * 3; // Não retorna nada!
}
console.log(triplo(4)); // undefined 😱
✅ Corrigindo:
function triplo(n) {
return n * 3;
}
2. Nome igual para variáveis e funções
function soma() {
return 2 + 2;
}
let soma = 10; // ⚠️ Conflito! Agora soma é um número, não uma função
console.log(soma()); // ❌ Erro!
3. Confundir console.log
com return
console.log
com return
function saudacao(nome) {
console.log("Oi, " + nome);
}
let resultado = saudacao("Léo");
console.log(resultado); // undefined
🌟 Resumo do que aprendemos:
return
Envia valor de volta ao código que chamou a função
IIFE
Função que se executa assim que é criada
...
Recebe vários argumentos como um array (rest
)
Parâmetros extras
São ignorados
Parâmetros faltando
Viram undefined
Tipos de função
function
, função anônima, arrow function
Funções são objetos
Podem ser guardadas, passadas e manipuladas
🧪 Desafio Final:
Crie uma função chamada calcularNotas
que receba qualquer quantidade de notas (usando ...
) e calcule a média:
calcularNotas(7, 8, 9, 10); // Deve retornar: 8.5
Depois, use essa função dentro de outra chamada situacaoAluno
que retorna:
“Aprovado ✅” se a média for ≥ 7
“Recuperação 🟡” se for ≥ 5
“Reprovado ❌” se for < 5
🎓 Conclusão
Agora você conhece as funções por dentro e por fora. Com essas ferramentas, dá pra escrever códigos mais inteligentes, mais rápidos e mais organizados!
✨ "Funções são como superpoderes: quando você entende como usá-las, pode resolver qualquer missão no mundo da programação!"
Last updated