Funções

Digamos que você está precificando itens em um carrinho. Você pega um número, adiciona imposto, arredonda e formata com um símbolo de moeda. Depois você precisa fazer novamente para o próximo item, e o próximo. Copiar esses quatro passos em todos os lugares é como bugs entram: corrija o arredondamento em um lugar e você ainda tem três outras cópias erradas. Uma função deixa você nomear esse bloco de passos uma vez e executá-lo sempre que precisar. Este capítulo é sobre escrever esses blocos, alimentá-los com entradas e obter valores de volta.
Declarando e chamando uma função
Uma função é um bloco de código nomeado que você pode executar sempre que quiser. Você escreve os passos uma vez, dá a eles um nome, e depois os executa por esse nome quantas vezes quiser.
Você cria uma com a palavra-chave function:
function greet() {
console.log("Oi");
}Essa é a definição completa, mas ainda nada aconteceu. Escrever uma função armazena os passos; isso não os executa. Para realmente executá-la, você a chama escrevendo seu nome seguido por parênteses:
greet(); // Oi
greet(); // OiDuas linhas, duas saudações, de um bloco de código. Definir e chamar são coisas separadas, e misturá-las é o primeiro passo que confunde as pessoas.
Dê a uma função um nome claro, tipo verbo, para o que ela faz (greet, logDivider), o mesmo cuidado que você tem ao nomear variáveis. Uma função que você chama em dez lugares é tão legível quanto seu nome.
greet(). Essa divisão me confundiu no início: a definição é a receita, a chamada é realmente cozinhar. Você pode chamar a mesma função quantas vezes quiser. Parâmetros e valores de retorno
Uma função é mais útil quando você pode alimentá-la com algo. Os valores que você alimenta são parâmetros: nomes listados nos parênteses que representam tudo o que você passa quando a chama.
function greet(name) {
console.log("Oi " + name);
}
greet("Maria"); // Oi Maria
greet("João"); // Oi Joãoname é o parâmetro. Quando você chama greet("Maria"), o texto "Maria" se encaixa em name para essa execução. Uma função, resultados diferentes, dependendo do que você passar para ela.
Até agora essas funções imprimem algo. Frequentemente você quer uma função para devolver um valor, para que você possa usá-lo depois. Isso é o que return faz:
function double(number) {
return number * 2;
}
const result = double(5);
console.log(result); // 10return envia um valor para fora da função. double(5) vira 10, e você pode armazená-lo, imprimi-lo ou passá-lo adiante. Imprimir mostra um valor na tela; retornar dá a você para continuar usando.
return devolve um valor para que seu código possa usá-lo depois. Imprimir com console.log mostra na tela; retornar devolve para você. Levou um tempo para eu sentir essa diferença. Funções arrow
Há uma forma mais curta de escrever uma função, chamada função arrow. Você a armazena em uma variável e usa a seta => em vez da palavra-chave function:
const add = (a, b) => {
return a + b;
};
console.log(add(2, 3)); // 5Quando a função é uma única expressão como essa, você pode descartar as chaves e o return e deixar a seta devolver o valor para você:
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5Ambas fazem a mesma coisa. Você verá funções arrow em todos os lugares no JavaScript moderno, então ajuda reconhecer a forma: um nome, um =, as entradas, uma seta e o corpo.
=> em vez da palavra-chave function. Quando o corpo é uma expressão, você pode descartar as chaves e return e a seta devolve o valor para você. Você verá essa forma constantemente, então ficar confortável em lê-la compensa rápido. Para onde as funções vão daqui
Funções são como você para de se repetir: nomeie um bloco de passos, alimente-o com entradas, obtenha um valor de volta. Uma vez que isso clica, a maioria do código que você escreve se torna pequenas funções chamando outras funções, cada uma fazendo um trabalho claro.
De aqui, funções aparecem em todos os lugares. Você as passará para métodos de array para transformar listas de dados, usará para organizar a lógica de ramificação de condicionais, e se apoiará na disciplina de nomenclatura que começou com variáveis. A próxima vez que você se vê copiando um bloco de código, esse é o sinal para envolvê-lo em uma função.

