Da trilha de JavaScript Este conceito ainda não saiu como card do dia. ir para o card de hoje

JavaScript Funções Básico

Funções

Funções são blocos de código reutilizáveis que executam uma tarefa específica. Em JavaScript, você pode declará-las de várias formas: declaração de função, expressão de função e arrow function. Cada uma tem particularidades, mas todas recebem parâmetros e retornam um valor.

Parâmetros podem ter valores padrão, usados quando o argumento não é fornecido ou é undefined. Além disso, o operador rest (...) permite agrupar múltiplos argumentos em um array, facilitando a criação de funções variádicas.

Neste card, você vai aprender a criar funções com diferentes sintaxes, usar parâmetros padrão e rest, e entender quando cada abordagem é mais adequada.

Pontos-chave

  • Declaração de função: function nome() {} — sofre hoisting, pode ser chamada antes da definição.
  • Expressão de função: const nome = function() {} — não sofre hoisting, precisa ser definida antes do uso.
  • Arrow function: const nome = () => {} — sintaxe curta, não tem this próprio, ideal para callbacks.
  • Parâmetros padrão: function soma(a = 1, b = 2) — usados quando o argumento é omitido ou undefined.
  • Rest: function soma(...numeros) — agrupa argumentos em um array, permitindo número variável de parâmetros.
funcoes.js
// Declaração de função (hoisting: pode ser chamada antes)
console.log(somar(2, 3)); // 5

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

// Expressão de função (não sofre hoisting)
const multiplicar = function(a, b) {
  return a * b;
};
console.log(multiplicar(4, 5)); // 20

// Arrow function (sintaxe curta)
const dividir = (a, b) => a / b;
console.log(dividir(10, 2)); // 5

// Parâmetros padrão
function saudacao(nome = 'Visitante') {
  return `Olá, ${nome}!`;
}
console.log(saudacao()); // Olá, Visitante!
console.log(saudacao('Ana')); // Olá, Ana!

// Rest: agrupa argumentos em array
function somaTodos(...numeros) {
  return numeros.reduce((acc, n) => acc + n, 0);
}
console.log(somaTodos(1, 2, 3, 4)); // 10
console.log(somaTodos(5, 10)); // 15

Exercícios

  1. 1
    Fácil

    Crie uma função de saudação

    Escreva uma função chamada saudacao que recebe um nome e retorna "Olá, [nome]!". Se o nome não for fornecido, use "Visitante" como padrão.

    Resolver
  2. 2
    Médio

    Soma com número variável de argumentos

    Crie uma função somarTudo que aceita qualquer quantidade de números e retorna a soma de todos eles. Use o operador rest para agrupar os argumentos.

    Resolver
  3. 3
    Desafio

    Função de estatísticas com parâmetros padrão e rest

    Crie uma função estatisticas que recebe um número mínimo de valores (pelo menos um) e retorna um objeto com a soma, a média, o maior e o menor valor. Use parâmetros padrão para permitir que a função seja chamada sem argumentos? Não, ela exige pelo menos um número. No entanto, use parâmetros padrão para o caso de valores não numéricos? Melhor: a função deve aceitar um número variável de argumentos (rest) e retornar um objeto com as estatísticas. Se nenhum argumento for passado, retorne null. Use arrow function para a função media interna? Não é necessário. O foco é rest e parâmetros padrão? O enunciado deve ser claro: use rest para agrupar os números, e parâmetros padrão para definir um valor inicial para o acumulador? Não, parâmetros padrão não se aplicam bem aqui. Vamos reformular: crie uma função estatisticas que recebe um array de números e um objeto de opções com valores padrão. As opções podem incluir precisao (casas decimais) e incluirExtremos (booleano). Use parâmetros padrão para as opções. Retorne um objeto com soma, media, maior, menor, e se incluirExtremos for true, inclua também os extremos. Use rest? Não, o array já é passado. Mas o sub tópico rest deve ser coberto. Então, melhor: a função recebe números variáveis e um último argumento opcional de opções? Isso é confuso. Vou simplificar: a função estatisticas recebe qualquer quantidade de números e retorna um objeto com soma, média, maior e menor. Se nenhum número for passado, retorna null. Use rest para os números. Para a média, use uma função interna que aplica toFixed com precisão padrão de 2 casas. Use parâmetro padrão na função interna? Sim: const media = (soma, qtd, precisao = 2) => (soma / qtd).toFixed(precisao); Isso cobre parâmetros padrão. E a função principal usa rest. Então o enunciado: Crie uma função estatisticas que aceita qualquer quantidade de números (use rest) e retorna um objeto com soma, media, maior e menor. A média deve ser calculada com 2 casas decimais usando uma função auxiliar calcularMedia que tem parâmetro padrão para a precisão. Se nenhum número for passado, retorne null. Exiba o resultado para estatisticas(10, 5, 8, 3) e estatisticas().

    Resolver

Continue estudando