Aprender e entender React - o tutorial prático

Funções de seta em JavaScript - Utilização eficiente

Todos os vídeos do tutorial Aprender e entender React - o tutorial prático

As funções são o coração do JavaScript. Embora anteriormente estivessem ligadas ao uso da palavra-chave function, o ES6 traz consigo uma forma nova e mais elegante de escrever com as chamadas arrow functions. Esta nova sintaxe não só torna o seu código mais curto, como também resolve alguns problemas associados a este contexto. Neste guia, você aprenderá tudo o que precisa saber sobre as funções de seta.

Principais lições

  • As funções de seta oferecem uma sintaxe mais curta em comparação com as funções convencionais.
  • Elas não têm seu próprio contexto this, o que as torna particularmente práticas para uso em funções de retorno de chamada.
  • A remoção de chaves e da instrução de retorno é possível se a função retornar apenas uma expressão.

Introdução às funções Arrow

As funções de seta são normalmente utilizadas para tornar o código mais legível e compacto. Em vez de escrever uma função, pode utilizar a nova sintaxe para declarar a função de forma mais curta.

Funções de seta em JavaScript - Utilização eficiente

Para compreender o que são as funções Arrow, as funções tradicionais podem ser utilizadas como um bom ponto de partida. Se declarar uma função com a palavra-chave function, esta é normalmente um pouco mais longa e menos elegante. Aqui está um exemplo de uma função padrão em JavaScript:

function doIt() { console.log("Doing it"); }

Este é o ponto de partida a partir do qual passamos para as funções Arrow.

Etapa 1: Declarando uma função Arrow

Em vez da palavra-chave function, pode simplesmente colocar os parâmetros entre parênteses e depois utilizar uma seta seguida do corpo da função. Aqui está o aspeto da função anterior como uma função Arrow:

const doIt = () => { console.log("Fazendo isso"); };

Como pode ver, a sintaxe é muito mais compacta. Após a primeira tentativa, pode verificar se a função funciona corretamente.

Etapa 2: Usando funções Arrow com matrizes

Outra grande vantagem das funções Arrow pode ser vista ao usá-las com matrizes. Vejamos um exemplo. Suponha que tem uma matriz de números e quer encontrar a posição de um determinado número. Aqui utilizamos o método findIndex para encontrar o índice:

const numbers = [2, 3, 4, 5]; const index = numbers.findIndex((element) => element === 3); console.log(index);

A função Arrow simplifica enormemente a legibilidade do código e reduz a necessidade de uma palavra-chave de função adicional.

Etapa 3: Encurtando funções Arrow

Se uma função Arrow tiver apenas uma expressão, pode omitir os parênteses rectos e a palavra-chave return. É assim que fica quando encurtamos ainda mais a função findIndex:

const index = numbers.findIndex(element => element === 3);

Isto não é apenas mais curto, mas também mais elegante. Pode testar a função e certificar-se de que continua a funcionar corretamente.

Passo 4: Lidando com a palavra-chave this

Uma vantagem decisiva das funções Arrow é o tratamento do contexto this. Nas funções clássicas, isto torna-se muitas vezes imprevisível, especialmente quando a função é utilizada como uma chamada de retorno. As funções Arrow, por outro lado, associam this ao contexto em que foi definida.

Dê uma olhada no exemplo a seguir:

const obj = { text: "Texto", print: function() { console.log(this.text); } };

obj.print(); // Produz "Texto"

No entanto, se você usar setTimeout com uma função convencional, o contexto disso muda:

setTimeout(function() { console.log(this.text); }, 1000); // Produz uma saída indefinida

Ao usar uma função Arrow dentro de setTimeout, você obtém o mesmo resultado que com a função clássica sem perder o contexto:

setTimeout(() => { console.log(this.text); }, 1000); // Produz "text"

Passo 5: Manter a atribuição de this

Você também pode vincular this a uma variável para garantir que você possa acessá-la. No entanto, esse padrão é geralmente menos elegante do que usar funções Arrow.

const self = this; setTimeout(function() { console.log(self.text); }, 1000);

Vantagens das funções Arrow

  • São mais curtas e mais elegantes em comparação com as declarações de funções convencionais.
  • Não têm o seu próprio contexto this, o que simplifica a sua utilização em funções de retorno de chamada.
  • A sintaxe permite tornar o código muito mais legível.

Resumo

As funções de seta oferecem uma forma prática de declarar funções JavaScript de forma eficiente. A nova sintaxe não apenas melhora a legibilidade, mas também simplifica consideravelmente o manuseio do contexto this. As funções de seta devem ser utilizadas sobretudo quando são necessárias funções de retorno ou expressões de função mais curtas.