edubun
Português

Funções

Escreva function square(n) { return n * n; } uma vez, e square(4) dá 16, square(9) dá 81, e assim por diante para qualquer número que você passar.

Dando nome a um trabalho

Você já usou funções escritas por outras pessoas: console.log, Math.round e toUpperCase são todas funções. Uma função é um bloco de código com nome que faz um trabalho. Você a define uma vez e depois a chama, pelo nome, quantas vezes quiser. As funções evitam que você copie as mesmas linhas de um lado para o outro, e deixam você pensar no programa em pedaços maiores: "calcular a gorjeta, depois dividir a conta" em vez de uma lista longa de contas.

function greet(name) {
  return "Hello, " + name + "!";
}

console.log(greet("Ana"));   // mostra Hello, Ana!
console.log(greet("Ji"));    // mostra Hello, Ji!

A definição começa com a palavra-chave function, depois o nome da função, depois uma lista de parâmetros entre parênteses. Um parâmetro é uma variável que recebe um valor quando a função é chamada; aqui ele é name. O corpo entre chaves faz o trabalho. Quando você chama greet("Ana"), o valor "Ana", chamado argumento, é colocado no parâmetro name, e o corpo roda.

return devolve um valor

A palavra-chave return encerra a função e manda um valor de volta para onde a função foi chamada. A chamada greet("Ana") é uma expressão, e o valor dela é o que foi devolvido. É por isso que ela pode ficar dentro de um console.log, ou dentro de um cálculo, ou ser guardada numa variável: const msg = greet("Ana");.

Devolver um valor e mostrá-lo são coisas diferentes, e iniciantes costumam confundir as duas. Uma função que só chama console.log mostra algo na tela, mas não devolve nada. A chamada dela é avaliada como undefined, então você não pode usar o resultado num cálculo. Como regra, deixe as funções devolverem resultados e deixe o código que as chama decidir se mostra.

function addPrint(a, b) {
  console.log(a + b);
}
function add(a, b) {
  return a + b;
}

const x = add(2, 3) * 10;
console.log(x);      // mostra 50
addPrint(2, 3);      // mostra 5, mas não devolve nada que se possa usar

return também para a função na hora. As linhas depois dele no mesmo caminho não rodam. Isso permite tratar casos especiais logo no começo: if (n < 0) return "negative"; no topo de uma função, com o caso normal escrito embaixo.

Vários parâmetros e valores padrão

Uma função pode receber vários parâmetros, separados por vírgulas, e os argumentos são associados em ordem: em add(2, 3), a é 2 e b é 3. Se uma chamada deixa de fora um argumento, aquele parâmetro fica undefined. Você pode dar a um parâmetro um valor padrão, usado quando nada é passado: function tip(bill, rate = 0.15) usa 0.15, a não ser que quem chama forneça outra taxa.

Arrow functions

O JavaScript moderno também tem um jeito mais curto de escrever funções pequenas, a arrow function (função seta). const square = (n) => n * n; quer dizer o mesmo que a função square da abertura. Quando o corpo é uma única expressão, o valor dela é devolvido automaticamente, sem chaves e sem a palavra return. Você vai ver arrow functions em todo código moderno.

O que é declarado dentro fica dentro

Parâmetros e variáveis declarados dentro de uma função só existem lá dentro. Isso se chama escopo. Duas funções diferentes podem ter cada uma uma variável chamada total sem interferir uma na outra, e o código fora de uma função não enxerga as variáveis privadas dela. Uma função pode ler variáveis declaradas fora dela, mas as funções mais limpas recebem tudo o que precisam pelos parâmetros e devolvem tudo pelo return, para que você consiga entendê-las sozinhas.

function nome(parâmetro) { return resultado; } const nome = (parâmetro) => resultado;

funçãoUm bloco de código com nome que faz um trabalho
chamadaExecutar uma função: nome(argumentos)
parâmetroUma variável da definição que recebe um valor
argumentoO valor passado numa chamada
returnEncerra a função e devolve um valor
parâmetro padrãorate = 0.15: usado quando nenhum argumento é dado
arrow function(n) => n * n
escopoOnde uma variável pode ser vista; o que está dentro de uma função fica dentro
  1. O que isto mostra?
    function double(n) {
      return n * 2;
    }
    console.log(double(7));
  2. O que isto mostra?
    function add(a, b) {
      return a + b;
    }
    console.log(add(2, 3) * add(1, 1));
  3. O que isto mostra?
    function minus(a, b) {
      return a - b;
    }
    console.log(minus(3, 10));
  4. O que isto mostra?
    function f(x) {
      return x + 1;
      console.log("hi");
    }
    console.log(f(1));
    • 2
    • hi, then 2
    • 2, then hi
  5. O que isto mostra?
    function show(n) {
      console.log(n);
    }
    const r = show(5);
    console.log(typeof r);
    • 5, then number
    • 5, then undefined
    • Only undefined
  6. O que isto mostra?
    const triple = (n) => n * 3;
    console.log(triple(4));
  7. O que isto mostra?
    function tip(bill, rate = 0.1) {
      return bill * rate;
    }
    console.log(tip(50));
  8. O que isto mostra?
    function tip(bill, rate = 0.1) {
      return bill * rate;
    }
    console.log(tip(50, 0.2));
  9. O que isto mostra?
    function sign(n) {
      if (n < 0) return "neg";
      if (n === 0) return "zero";
      return "pos";
    }
    console.log(sign(0));
  10. Em function area(w, h) chamada como area(3, 5), como se chamam w e h, e como se chamam 3 e 5?
    • w e h são parâmetros; 3 e 5 são argumentos
    • w e h são argumentos; 3 e 5 são parâmetros
    • Os quatro são valores de retorno
Pontos-chave
  • function nome(params) { ... } define; nome(args) chama.
  • Os argumentos são associados aos parâmetros em ordem.
  • return encerra a função e devolve um valor; mostrar não é devolver.
  • Parâmetros padrão preenchem argumentos que faltam.
  • Arrow functions: (n) => n * n.
  • Variáveis dentro de uma função ficam dentro (escopo).
Fontes deste curso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Data de verificação: 2026-10-17