Aula: - Funções Arrow #01 | Forum Cod3r
Aula: Funções Arrow #01
Venho compartilhar uma dúvida muita interessante que surgiu nesta aula:
Já que a função arrow é anônima, mas seu valor é atribuido a uma variável, isso acaba fazendo com que a função receba o nome da variável, então pra que eu utilizaria esse tipo de função se uma função convencional faz a mesma coisa?
Bom, o primeiro ponto que me chamou a atenção nessa pergunta foi atribuir uma arrow function a uma variável, já que isso é algo bem pouco usado, mas foi o exemplo apresentado na aula. Geralmente as arrow functions são utilizadas como callback functions ( esse assunto será abordado nas próximas aulas), por possuírem uma sintaxe reduzida. Elas geralmente são usadas para fazer funções simples, mas "brilham" por assim dizer como callback functions, especialmente em alguns métodos que são mostrados na seção relacionada a Arrays.
Se você não entendeu qual a utilidade de arrow functions, eu recomendo que você tenha um pouco de paciência, pois na seção de Arrays do curso, elas serão usadas frequentemente, e vai ficar muito mais fácil entender quando você deve utilizá-las.
A página da FirefoxMDN sobre Arrow Functions é bem interessante para ler mais sobre o assunto, também! Sempre vou lá para tirar uma dúvida ou duas, ou várias haha
Sim, uma boa documentação salva vidas!!
Outro fato que lembro, pois passei a pouco por este ponto, refere-se a questão do this não variar no tipo de função Arrow e respeita sempre o contexto léxico de onde foi criada a função.
Pelo que ví este seria outro motivo importante de usar Arrow functions.
Last edited: 23/8/21
Reactions: Letícia Garcez and Raquel
Esse também é um bom ponto Ricardo. Obrigada por pontuá-lo!
Mas e quando NÃO usar as Arrow Functions?
O aluno Igor, lá na Udemy, mandou o link de um artigo bem legal que fala sobre o assunto!
Segue o link: Quando não usar uma Arrow Function!
Reactions: Letícia Garcez and Igor
Legal o artigo. Obrigado por compartilhar. Fiquei com dúvida foi no que ele quis dizer com compartilhar contextos, neste trecho:
" e algumas utilidades como, por exemplo, compartilhamento de contextos, " não ficou muito claro para mim.
Um quadro resumido seria um trecho que tem na própria spec. (https://www.ecma-international.org/ecma-262/11.0/index.html#prod-ArrowFunction)
Não tendo arguments, não dá para usar isso, use o spread, o rest, e mesmo que o arguments esteja disponível dê preferênca ao spread e ao rest, o uso de arguments já é desencorajado, se puder troque.
Não tendo new.target não pode ser uma Função construtora, daí não se poder usar o operador new, pois não é possível criar um novo object target. Se não tem como chamar o construtor não tem porque ter o super (aqui talvez a ordem seja a inversa )
Se não tem this, não tem porque as usar em prototypes. Porque não dá para referênciar o objecto que chama o método, essa referência não é dinâmica dentro da Arrow Function.
Lembrando que as Arrow não os tem, mas podem resolve-los, lexicamente, isto é, resolve eles na fase do parse, quando o "escopo está sendo montado"(daí também se diz que os resolvem estaticamente, no momento da sua definição)