Bem-vindos à nossa comunidade!

Junte-se a nós e faça parte hoje mesmo!

Aula: Funções Arrow #01

Letícia Garcez

Membro
Moderador
Cadastro
22/6/21
Postagens
183
Curtidas
288
Pontuação
125
Cidade
Canguçu
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.
 

Ricardo Tortorelli

Novo Membro
Cadastro
22/8/21
Postagens
9
Curtidas
23
Pontuação
19
Cidade
Porto Alegre
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:

mourabraz

Membro
Moderador
Cadastro
23/12/20
Postagens
138
Curtidas
185
Pontuação
100
Cidade
Leiria
Mas e quando NÃO usar as Arrow Functions?

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)

ABrmVLdDzJMcZuVHbTFYzSokMq1KVh-vsw_f8u5Nx-G7mkF14TtY1qNs01VHnFlNHhBLU1ybUfI4Wjw_SuaqDmfh6jKa5pLQPsRoKYywdxURRH9VOlssKeVT71Gv1cCXL4qA20AlnA=s0


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 :p )
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)

Abraços.
 
Top