Funções em JavaScript
Estes cartões cobrem os principais conceitos de funções em JavaScript, incluindo sintaxe, arrow functions, escopo e assincronicidade, destinados a estudantes de programação.
Cartões · 50
- O que é uma Função?
- Bloco reutilizável de código projetado para executar uma tarefa específica quando chamado. Sintaxe: function nome() { ... }
- Declaração de Função (Function Declaration)
- Forma padrão com a palavra-chave function e nome obrigatório, sofrendo hoisting completo. Sintaxe: function somar(a, b) { return a + b; }
- Expressão de Função (Function Expression)
- Atribuição de uma função a uma variável, não sendo içada antes da definição. Sintaxe: const somar = function(a, b) { return a + b; };
- Arrow Function
- Sintaxe concisa introduzida no ES6, que não possui seu próprio this nem arguments. Sintaxe: const somar = (a, b) => a + b;
- Arrow Function com corpo de bloco
- Versão com chaves exigindo a palavra-chave return para emitir valores. Sintaxe: const calc = (x) => { const y = x * 2; return y; };
- Parâmetros de Função
- Variáveis listadas na definição da função que recebem valores. Sintaxe: function saudar(nome) { console.log(nome); }
- Argumentos de Função
- Valores reais passados para a função durante a sua chamada. Exemplo: saudar('Maria');
- Comando return
- Interrompe a execução da função e retorna um valor específico ao chamador. Sintaxe: function dobro(n) { return n * 2; }
- Retorno Implícito
- Retorno automático em arrow functions de linha única sem chaves. Sintaxe: const triplo = n => n * 3;
- Retorno Padrão (undefined)
- Resultado devolvido por qualquer função que não contenha uma instrução return explícita. Exemplo: function vazio() {} // retorna undefined
- Parâmetro Padrão (Default Parameters)
- Define valores predefinidos caso nenhum argumento seja passado. Sintaxe: function saudacao(nome = 'Visitante') { return nome; }
- Parâmetro Rest (...)
- Permite representar um número indefinido de argumentos como um array. Sintaxe: function total(...valores) { return valores.reduce((a, b) => a + b); }
- Objeto arguments
- Objeto tipo array disponível em funções tradicionais contendo os argumentos passados. Sintaxe: function contar() { return arguments.length; }
- Função Anônima
- Função criada sem um identificador de nome, usada como callback ou em expressões. Sintaxe: setTimeout(function() { console.log('Olá'); }, 1000);
- Função Nomeada
- Função que possui um identificador explicito, útil para recursão e depuração de erros. Sintaxe: const f = function operacao() { ... };
- Funções de Primeira Classe (First-Class Functions)
- Conceito em que funções são tratadas como valores normais, podendo ser atribuídas a variáveis ou passadas como parâmetros.
- Função de Ordem Superior (Higher-Order Function)
- Função que recebe outra função como argumento ou retorna uma nova função. Exemplo: array.map(item => item * 2);
- Função Callback
- Função passada para outra como argumento para ser invocada posteriormente. Sintaxe: function processar(cb) { cb(); }
- IIFE (Immediately Invoked Function Expression)
- Função executada imediatamente após ser criada, isolando escopo. Sintaxe: (function() { console.log('Executou!'); })();
- Escopo de Função
- Variáveis declaradas dentro de uma função são locais e inacessíveis fora dela. Exemplo: function teste() { var local = 10; }
- Escopo Léxico
- Capacidade de uma função interna acessar variáveis do contexto onde ela foi definida fisicamente no código.
- Closure
- Combinação de uma função com a referência ao seu escopo léxico original. Sintaxe: function externa() { let x = 1; return () => x; }
- Hoisting de Função
- Comportamento de mover declarações de funções para o topo do escopo antes da execução, permitindo chamá-las antes da sua definição.
- Palavra-chave this em Funções
- Refere-se ao objeto de contexto no qual a função é executada, variando de acordo com o modo de chamada.
- Comportamento do this na Arrow Function
- Não vincula seu próprio this, capturando o valor do this do escopo delimitador no momento em que é criada.
- Método Function.prototype.call()
- Chama uma função passando explicitamente o valor de this e argumentos individuais. Sintaxe: func.call(objeto, arg1, arg2);
- Método Function.prototype.apply()
- Chama uma função definindo o valor de this e passando argumentos como um array. Sintaxe: func.apply(objeto, [arg1, arg2]);
- Método Function.prototype.bind()
- Cria uma nova função que, ao ser chamada, tem seu this fixado ao valor fornecido. Sintaxe: const bound = func.bind(objeto);
- Função Construtora
- Usada como molde para criar novos objetos quando combinada com o operador new. Sintaxe: function Carro(marca) { this.marca = marca; }
- Operador new
- Instancia um novo objeto, vincula seu protótipo e define o this para o novo objeto na função construtora. Sintaxe: const c = new Carro('Fiat');
- Função Pura (Pure Function)
- Função que sempre retorna o mesmo resultado para os mesmos argumentos e não produz efeitos colaterais. Sintaxe: const soma = (a, b) => a + b;
- Efeito Colateral (Side Effect)
- Modificação de qualquer estado fora do escopo local da função durante a sua execução, como alterar uma variável global.
- Recursão em Funções
- Técnica em que uma função chama a si mesma até atingir uma condição base de parada. Sintaxe: function f(n) { return n <= 1 ? 1 : n * f(n - 1); }
- Condição Base (Base Case)
- Condição necessária em funções recursivas para interromper chamadas adicionais e evitar loops infinitos.
- Pilha de Chamadas (Call Stack)
- Estrutura de controle que gerencia a ordem em que as funções são chamadas e finalizadas no motor JavaScript.
- Estouro de Pilha (Stack Overflow)
- Erro gerado quando a pilha de chamadas atinge o limite máximo por recursão infinita ou profunda demais.
- Função Assíncrona (async/await)
- Função que opera de forma assíncrona usando a event loop e sempre retorna uma Promise. Sintaxe: async function buscar() { await carregar(); }
- Palavra-chave await
- Pausa a execução da função assíncrona até que uma Promise seja resolvida ou rejeitada. Sintaxe: const dado = await fetch(url);
- Função Geradora (Generator Function)
- Função especial que pode ser pausada e continuada no tempo usando yield. Sintaxe: function* gerar() { yield 1; yield 2; }
- Comando yield
- Pausa a execução de uma função geradora e retorna um valor ao iterador externo. Sintaxe: yield valor;
- Método de Objeto
- Função definida como propriedade dentro de um objeto. Sintaxe: const obj = { falar() { console.log('Olá'); } };
- Getter em Métodos
- Liga uma propriedade de um objeto a uma função que é chamada quando a propriedade é acessada. Sintaxe: get nomeCompleto() { return this.nome; }
- Setter em Métodos
- Liga uma propriedade de um objeto a uma função chamada quando se tenta atribuir um valor. Sintaxe: set idade(v) { this._idade = v; }
- Currying
- Processo de transformar uma função com múltiplos argumentos em uma sequência de funções que recebem um argumento cada. Sintaxe: f(a)(b);
- Composição de Funções
- Combinação de duas ou mais funções para produzir uma nova função, onde a saída de uma vira a entrada da outra. Sintaxe: const f = x => g(h(x));
- Memoization
- Técnica de otimização que armazena em cache o resultado de chamadas de funções com base nos seus parâmetros para acelerar execuções futuras.
- Debounce de Função
- Padrão que adia a execução da função até que um período de inatividade transcorra desde a sua última invocação.
- Throttle de Função
- Padrão que limita a frequência com que uma função pode ser disparada durante um intervalo regular de tempo.
- Função Polifill
- Pedaço de código ou função usada para fornecer recursos modernos em ambientes de navegadores antigos que não os suportam nativamente.
- Função Autoexecutável Assíncrona
- IIFE com suporte assíncrono útil para executar await no nível raiz em módulos mais antigos. Sintaxe: (async () => { await tarefa(); })();