Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Qual a diferença entre criar uma constante com uma arrow function e criar uma function() normal?

Durante as aulas da Alura, percebi que é utilizado tanto o arrow function contido na const, como também uma function() normal. Queria entender qual a diferença entre as duas.

function createTask(tarefa) {};
const selecionarTarefaParaEditar = (tarefa, elemento) => {};
3 respostas
solução!

Oi, Dárcio, tudo bem?

A diferença entre as duas é que a arrow function é uma forma mais concisa de escrever uma função em JavaScript. Ela foi introduzida na versão ES6 da linguagem e tem algumas diferenças em relação à função tradicional.

A principal diferença é que a arrow function não cria seu próprio escopo de variáveis, mas sim herda o escopo do contexto em que ela foi definida. Isso significa que ela não tem seu próprio this e arguments. Além disso, ela não pode ser usada como um construtor, ou seja, não pode ser chamada com o operador new.

Já a função tradicional (function declaration) tem seu próprio escopo de variáveis e cria seu próprio this e arguments. Ela pode ser usada como um construtor e pode ser chamada com o operador new.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

O que significa:

  • Não ter seu próprio escopo de variáveis
  • Não ter seu próprio this e arguments
  • Não poder ser usada como construtor/não pode ser chamada como o operador New?

Existe algum local onde eu possa me aprofundar nestes temas?

Oi, Turi, tudo bem?

Desculpe a demora em te responder!

As funções de seta não possuem seu próprio escopo de variáveis. Isso significa que elas não criam um novo contexto de variáveis quando são definidas, mas em vez disso, herdam o escopo de variáveis do contexto em que são criadas. Já as funções regulares em JavaScript têm seu próprio escopo, o que significa que as variáveis declaradas em uma função regular não são acessíveis fora dela.

As funções de seta também não têm seus próprios objetos this e arguments. Elas herdam o valor de this do contexto em que foram criadas e não possuem um objeto arguments, mas o que significas objetos thise arguments? O this se refere ao contexto de execução da função no momento em que a função é chamada, enquanto o arguments é uma variável implícita disponível dentro de funções em JavaScript. Ele representa os argumentos passados para a função quando ela é chamada.

Exemplo do this:

const myObject = {
  value: 42,
  getValue: function() {
    console.log(this.value); // "this" se refere a myObject
  },
};

myObject.getValue();

Exemplo do arguments:

function exampleFunction() {
  console.log(arguments.length); // Mostra o número de argumentos passados
  console.log(arguments[0]); // Acessa o primeiro argumento
  console.log(arguments[1]); // Acessa o segundo argumento
}

exampleFunction(10, "Hello");

Por fim, funções de seta não podem ser usadas como construtores e não podem ser chamadas com o operador new, ou seja, essas função não pode ser chamada com o operador new para criar novas instâncias de objetos.

Caso queira aprender mais sobre funções de seta e as diferenças entre elas e as funções regulares, você pode se aprofundar nos estudos sobre JavaScript.

Espero ter ajudado. Caso tenha dúvidas, crie um novo tópico no fórum para que eu possa te ajudar de forma mais assertiva. Abraços!