Retorno e Escopo: O Segredo das Funções
O que vais aprender nesta aula:
- A palavra-chave
returnpara devolver valores - A diferença entre `mostrar` (console.log) e `devolver` (return)
- Escopo Global vs Local (Onde vivem as variáveis?)
🧠 Teoria (com Analogia e Contexto Real)
Muitos alunos confundem "imprimir no ecrã" com "devolver um valor". Vamos esclarecer isso.
🏧 Analogia do Multibanco
Imagina um Multibanco (ATM):
- console.log(): É o talão que sai a dizer "Levantaste 20€". Tu lês a informação, mas não podes comprar pão com o talão.
- return: São as notas de 20€ que saem da ranhura. Podes pegar nesse dinheiro e usá-lo noutra loja.
As funções úteis são as que entregam dinheiro (return), não só as que imprimem recibos!
🏠 Analogia da Casa (Escopo)
Variável Global (Rua): Toda a gente vê e pode usar.
Variável Local (Dentro de Casa): Só quem está dentro da casa (função) é que vê. Cá fora, ninguém sabe que ela existe.
💻 Prática (Orientada e Progressiva)
Vamos transformar funções simples em ferramentas poderosas:
Exemplo 1: Usar o `return`
Agora a função devolve o valor, e guardamos numa variável.
function somar(a, b) {
let resultado = a + b;
return resultado; // "Aqui tens o valor, usa-o!"
}
let total = somar(10, 5); // total fica com 15
console.log(total * 2); // 30 (Usámos o resultado noutra conta!)
Exemplo 2: Escopo (Onde a variável vive)
let nomeGlobal = "Portugal"; // Global
function teste() {
let nomeLocal = "Lisboa"; // Local
console.log(nomeGlobal); // Funciona (vê a rua)
console.log(nomeLocal); // Funciona (está na casa)
}
teste();
console.log(nomeGlobal); // Funciona
console.log(nomeLocal); // ❌ ERRO! nomeLocal is not defined
return, a função PARA imediatamente e sai. Nada que escrevas depois do return será executado.
✅ Verificação de Conhecimento
1. O que acontece a uma função depois de executar o `return`?
2. Consigo aceder a uma variável criada DENTRO de uma função, a partir de FORA?
3. Qual a diferença entre `console.log` e `return`?
🧩 Desafio Prático
Conversor de Anos de Cão
Dizem que 1 ano humano equivale a 7 anos de cão (aproximadamente).
Cria uma função calcularIdadeCao que recebe a idade humana e retorna a idade canina.
Requisitos:
- A função deve ter um
return. - Fora da função, guarda o resultado numa variável
idadeRex. - Mostra na consola: "O Rex tem X anos caninos."
// 1. Função...
// 2. Variável que recebe o return...
// 3. Log...
Mostrar Solução
function calcularIdadeCao(idadeHumana) {
return idadeHumana * 7;
}
let idadeRex = calcularIdadeCao(3); // Rex tem 3 anos humanos
console.log("O Rex tem " + idadeRex + " anos caninos.");
📌 Explicação: A função processa e "cospe" o número 21. A variável idadeRex apanha esse 21 e guarda-o. Se usássemos apenas console.log dentro da função, a variável idadeRex ficaria vazia (undefined)!