Função em JavaScript: Tudo o Que Você Precisa Saber Para Dominar Essa Ferramenta

Função em JavaScript: Tudo o Que Você Precisa Saber Para Dominar Essa Ferramenta

Como especialista em desenvolvimento web com mais de 15 anos de experiência, posso afirmar com total segurança: função em JavaScript é um dos pilares mais importantes para quem quer evoluir na programação. Antes de tudo, entender bem como as funções funcionam, como são criadas e como podem ser otimizadas é essencial para criar códigos limpos, reutilizáveis e eficientes.

A princípio, pode parecer complicado, mas fique tranquilo! Ao longo deste artigo, você vai perceber que dominar as funções é mais simples do que imagina, além de ser uma habilidade que abrirá muitas portas no mercado de trabalho.

O que é uma função em JavaScript?

Em primeiro lugar, precisamos entender o conceito básico. Uma função em JavaScript é um bloco de código reutilizável que realiza uma tarefa específica. Ou seja, você pode escrever um código uma vez e usá-lo quantas vezes quiser, evitando repetições desnecessárias.

Além disso, uma função pode receber entradas, chamadas de parâmetros, e pode retornar uma saída, conhecida como valor de retorno.

Por que usar função em JavaScript?

Sobretudo, utilizar funções em seus códigos JavaScript é fundamental por diversos motivos:

  • Organização: facilita a divisão do código em blocos menores e mais fáceis de entender.
  • Reutilização: evita escrever o mesmo código várias vezes.
  • Manutenção: alterações são feitas em um único local.
  • Legibilidade: melhora a clareza do código.

Como criar uma função em JavaScript?

Primeiramente, para criar uma função em JavaScript, você pode usar a palavra-chave function. Veja um exemplo:

javascriptCopiarEditarfunction saudacao(nome) {
  return `Olá, ${nome}!`;
}

Nesse sentido, a função saudacao recebe um parâmetro nome e retorna uma saudação personalizada.

Diferença entre função declarada e função expressão

Antes de mais nada, é essencial compreender que há mais de uma forma de declarar uma função em JavaScript. As principais são:

Função declarada

Do mesmo modo que o exemplo anterior, usamos a palavra-chave function seguida do nome da função:

javascriptCopiarEditarfunction soma(a, b) {
  return a + b;
}

Função expressão

Em outras palavras, podemos armazenar uma função dentro de uma variável:

javascriptCopiarEditarconst multiplicar = function(a, b) {
  return a * b;
};

Apesar disso, a função expressão não é “hoisted” — ou seja, não pode ser chamada antes de ser declarada no código.

Função anônima: quando e como usar?

Acima de tudo, uma função anônima é aquela que não possui um nome identificador. Muito comum em callbacks e programação assíncrona:

javascriptCopiarEditarsetTimeout(function() {
  console.log('Função anônima executada!');
}, 1000);

Nesse sentido, usamos funções anônimas quando não há necessidade de reutilização daquele bloco de código.

Arrow Functions: a modernização das funções

Principalmente com o ES6, as arrow functions revolucionaram a forma como declaramos funções em JavaScript. Veja só:

javascriptCopiarEditarconst saudacao = (nome) => `Olá, ${nome}!`;

Bem como a sintaxe mais curta, as arrow functions também possuem comportamento diferenciado com relação ao this, o que vamos explicar em breve.

O comportamento do this em função em JavaScript

Antes de mais nada, o this é uma palavra-chave que representa o contexto de execução de uma função. Contudo, em função em JavaScript, esse contexto muda dependendo de como a função é chamada.

Por exemplo:

javascriptCopiarEditarconst pessoa = {
  nome: 'Ana',
  falar: function() {
    console.log(`Meu nome é ${this.nome}`);
  }
};

pessoa.falar();

Nesse exemplo, this se refere ao objeto pessoa. Porém, com arrow functions, o this não muda de contexto:

javascriptCopiarEditarconst pessoa = {
  nome: 'Ana',
  falar: () => {
    console.log(`Meu nome é ${this.nome}`);
  }
};

pessoa.falar(); // undefined

Ou seja, cuidado ao usar arrow functions dentro de objetos!

Parâmetros e argumentos: qual a diferença?

Em primeiro lugar, muita gente confunde esses dois termos.

  • Parâmetros são variáveis listadas na definição da função.
  • Argumentos são os valores passados quando a função é chamada.

Por exemplo:

javascriptCopiarEditarfunction soma(x, y) { // parâmetros
  return x + y;
}

soma(5, 10); // argumentos

Parâmetro default: tornando funções mais robustas

Além disso, o ES6 introduziu a possibilidade de definir valores padrão para os parâmetros:

javascriptCopiarEditarfunction saudacao(nome = 'Visitante') {
  return `Olá, ${nome}!`;
}

Assim, se o argumento não for passado, o JavaScript usa o valor padrão.

Rest parameters: trabalhando com vários argumentos

Do mesmo modo, às vezes precisamos que uma função aceite múltiplos parâmetros. Para isso, usamos o operador ...:

javascriptCopiarEditarfunction somarTudo(...numeros) {
  return numeros.reduce((acc, val) => acc + val, 0);
}

somarTudo(1, 2, 3, 4); // 10

Callback: funções que recebem outras funções

A princípio, função em JavaScript pode ser passada como argumento para outra função. Isso é o que chamamos de callback.

javascriptCopiarEditarfunction processarEntrada(input, callback) {
  callback(input);
}

processarEntrada('Hello!', function(texto) {
  console.log(texto);
});

Ou seja, funções são cidadãos de primeira classe em JavaScript.

Funções síncronas e assíncronas

Em outras palavras, funções podem ser síncronas (executam imediatamente) ou assíncronas (executam depois, geralmente após uma operação de I/O).

Funções assíncronas com async/await

Principalmente, com a introdução de async/await, ficou muito mais fácil trabalhar com funções assíncronas:

javascriptCopiarEditarasync function obterDados() {
  const resposta = await fetch('https://api.exemplo.com/dados');
  const dados = await resposta.json();
  return dados;
}

Contudo, sempre que usar await, a função deve ser async.

Função recursiva: quando uma função chama a si mesma

Em primeiro lugar, a recursividade é uma técnica poderosa onde uma função chama a si mesma para resolver um problema.

Por exemplo:

javascriptCopiarEditarfunction fatorial(n) {
  if (n <= 1) return 1;
  return n * fatorial(n - 1);
}

fatorial(5); // 120

Entretanto, é preciso cautela para evitar loops infinitos.

Closures: funções que “lembram” o escopo

Sobretudo, closures são funções que mantêm acesso às variáveis do escopo onde foram criadas, mesmo após esse escopo ter sido finalizado.

Por exemplo:

javascriptCopiarEditarfunction saudador(saudacao) {
  return function(nome) {
    console.log(`${saudacao}, ${nome}`);
  };
}

const ola = saudador('Olá');
ola('Maria'); // Olá, Maria

Ou seja, closures são muito úteis para criar funções personalizadas e manter dados privados.

Função construtora: criando objetos

Antes de tudo, funções também podem ser usadas como construtoras para criar objetos. Para isso, usamos new:

javascriptCopiarEditarfunction Pessoa(nome) {
  this.nome = nome;
}

const p1 = new Pessoa('Carlos');
console.log(p1.nome); // Carlos

Contudo, atualmente, muitos desenvolvedores preferem usar class para esse fim.

Diferença entre função e método

Em primeiro lugar, um método nada mais é do que uma função em JavaScript associada a um objeto.

javascriptCopiarEditarconst carro = {
  marca: 'Toyota',
  ligar: function() {
    console.log('Carro ligado');
  }
};

Ou seja, toda função pode ser um método, dependendo de como é definida.

Boas práticas ao usar função em JavaScript

Além disso, seguem algumas dicas importantes:

  • Use nomes claros e descritivos.
  • Evite funções muito longas.
  • Prefira funções puras, sem efeitos colaterais.
  • Documente o propósito da função.
  • Utilize arrow functions para funções curtas.

Quando não usar função em JavaScript

Apesar disso, nem sempre é necessário criar uma função. Por exemplo, para operações muito simples e que não se repetem, talvez criar uma função seja um exagero.

Além disso, funções excessivamente genéricas podem tornar o código confuso.

Minhas Impressões Pessoais

Pessoalmente, considero a função em JavaScript uma das ferramentas mais poderosas e versáteis da linguagem. A possibilidade de criar funções anônimas, usar closures e trabalhar com programação assíncrona faz dessa funcionalidade algo essencial para qualquer desenvolvedor. Sem dúvida, quem domina funções está um passo à frente no mundo da programação.

Xiaomi Robot Vacuum S20+ (branco)

Amazon.com.br

Robô Aspirador de Pó Inteligente S20 Xiaomi, Branco (XM806BRA)

Amazon.com.br

Xiaomi Robot Vacuum X10 - Robot aspirador e limpa-chão com sistema inteligente de navegação a laser (LDS), sucção de 4000 Pa, base de auto-esvaziamento, 5200 mAh, branco

Amazon.com.br
Função em JavaScript: Tudo o Que Você Precisa Saber Para Dominar Essa Ferramenta

Perguntas Frequentes (FAQ)

O que é uma função em JavaScript?

Uma função em JavaScript é um bloco de código que pode ser reutilizado e executado quando chamado.

Como eu crio uma função em JavaScript?

Para criar uma função, você usa a palavra-chave “function”, seguida do nome da função e parênteses, como em “function minhaFuncao() {}”

Quais são os tipos de funções em JavaScript?

Os tipos de funções incluem funções declaradas, funções anônimas, funções de expressão e funções de seta.

Prof. Eduardo Henrique Gomes
Prof. Eduardo Henrique Gomes

Apaixonado por tecnologia e análise de gadgets, trazendo reviews e insights para a Web Academy.