Módulo 4 de 8

Funções

Ao final deste módulo, você será capaz de:

1. Por que usar funções?

Uma função é um bloco de código reutilizável. Em vez de repetir o mesmo código várias vezes, escrevemos uma vez dentro de uma função e a "chamamos" sempre que precisarmos.

function saudar(nome) {
  console.log("Olá, " + nome + "!");
}

saudar("Carlos"); // Olá, Carlos!
saudar("Beatriz"); // Olá, Beatriz!

2. Parâmetros e retorno

Parâmetros são as "entradas" da função. return define a "saída" — o valor que a função devolve para quem a chamou. Assim que o JavaScript encontra um return, a função para de executar.

function somar(a, b) {
  return a + b;
}

let resultado = somar(3, 4);
console.log(resultado); // 7
Dica: uma função sem return devolve undefined. Isso é diferente de usar console.log, que só mostra algo no console mas não devolve valor para ser usado depois.

3. Valores padrão para parâmetros

Você pode definir um valor padrão, usado quando o argumento não é passado na chamada:

function saudar(nome = "visitante") {
  console.log("Olá, " + nome + "!");
}

saudar();          // Olá, visitante!
saudar("Marcos");  // Olá, Marcos!

4. Arrow functions: outra forma de escrever funções

As arrow functions (funções de seta) são uma sintaxe mais curta, muito usada em JavaScript moderno:

// Função tradicional
function dobrar(numero) {
  return numero * 2;
}

// Arrow function equivalente
const dobrar2 = (numero) => {
  return numero * 2;
};

// Arrow function ainda mais curta (retorno implícito, sem chaves)
const dobrar3 = (numero) => numero * 2;

console.log(dobrar(5), dobrar2(5), dobrar3(5)); // 10 10 10

5. Escopo: onde uma variável "existe"

Variáveis criadas dentro de uma função (escopo local) só existem ali dentro. Variáveis criadas fora de qualquer função (escopo global) podem ser usadas em qualquer lugar do código.

let mensagemGlobal = "Eu existo em todo lugar";

function testarEscopo() {
  let mensagemLocal = "Eu só existo aqui dentro";
  console.log(mensagemGlobal); // funciona
  console.log(mensagemLocal);  // funciona
}

testarEscopo();
console.log(mensagemGlobal);   // funciona
// console.log(mensagemLocal); // ERRO: mensagemLocal não existe aqui fora
Atenção: evite depender demais de variáveis globais. Prefira passar valores como parâmetros e devolver resultados com return — isso deixa o código mais previsível.

Exercício prático

Quiz de fixação