ANÚNCIO

~/questoes/programacao

Qual das opções melhor descreve o comportamento de uma arrow function?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Curso de JavaScript com Exercícios e Projetos
Para fixar

Arrow Functions e o Contexto Léxico do this

Conceito central

Arrow functions são uma forma moderna de escrever funções em JavaScript com comportamento especial para o this. Diferente das funções tradicionais, as arrow functions herdam o this do local onde foram definidas, não do local onde são executadas.

Por que essa resposta faz sentido

Arrow functions herdam o this do contexto léxico (do escopo externo onde foram criadas), não possuem seu próprio this e não podem ter this vinculado dinamicamente. Isso as torna previsíveis e úteis em muitos cenários, especialmente com callbacks e métodos de objetos.

Armadilhas comuns

  • Confundir arrow functions com funções regulares e esperar que elas tenham seu próprio this que pode ser alterado com call(), apply() ou bind()
  • Achar que arrow functions sempre vinculam this ao objeto global, quando na verdade herdam do escopo imediatamente externo
  • Pensar que usar arrow functions em métodos de objetos vai funcionar normalmente, esquecendo que o this não será o objeto, mas sim o contexto onde o objeto foi definido

Entenda as alternativas

A

Arrow functions sim possuem this, mas ele não é seu próprio. Elas usam o this do escopo externo, então não causam erro. Essa confusão acontece porque arrow functions se comportam de forma diferente das funções regulares.

B

Arrow functions não têm sua própria instância de this. Elas não vinculam this dinamicamente como funções regulares fazem. O this delas é sempre herdado do contexto externo, não criado no momento da execução.

C

Arrow functions não vinculam this ao objeto global automaticamente. O this delas é determinado pelo escopo onde foram definidas. Se definida no escopo global, aí sim ela herda o this global, mas não é automático para todos os casos.

D

Esta é a resposta correta. Arrow functions herdam o this do contexto léxico onde foram definidas. Isso significa que o this é determinado no momento em que a função é criada, não quando ela é executada, oferecendo previsibilidade.

Dica prática: Use arrow functions em callbacks (como dentro de setTimeout ou map de arrays) para manter o this do escopo externo. Use funções regulares quando você precisar que o this seja dinâmico ou represente o objeto que chamou a função.

Revise pensando: Se você escrever uma arrow function dentro de um método de um objeto, qual this ela vai herdar: o do objeto ou o do escopo externo onde o objeto foi definido?