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.

1
Xiaomi Robot Vacuum S20+ (branco)
Xiaomi Robot Vacuum S20+ (branco)
10
Amazon.com.br
2
Robô Aspirador de Pó Inteligente S20 Xiaomi, Branco (XM806BRA)
Robô Aspirador de Pó Inteligente S20 Xiaomi, Branco (XM806BRA)
9.7
Amazon.com.br
3
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
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...
9.4
Amazon.com.br
Como afiliado, podemos receber comissão por compras qualificadas, sem custo extra para você.

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
Como afiliado, podemos receber comissão por compras qualificadas, sem custo extra para você.

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

Amazon.com.br
Como afiliado, podemos receber comissão por compras qualificadas, sem custo extra para você.

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...

Amazon.com.br
Como afiliado, podemos receber comissão por compras qualificadas, sem custo extra para você.
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.

Picture of Prof. Eduardo Henrique Gomes
Prof. Eduardo Henrique Gomes

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