Differenza nell'espressione di funzione

1

Recentemente mi sono imbattuto in un altro modo di scrivere un'espressione di funzione, come questa: setTimeout(() =>{/*code*/},1000); invece di: setTimeout(function(){/*code*/},1000);

Qual è il vantaggio dell'utilizzo di () = > anziché function(){}

Posso usarlo tutto il tempo o solo in certe situazioni?

Grazie.

    
posta angular_learner 06.06.2016 - 12:30
fonte

2 risposte

3

Ci sono alcune differenze tra le funzioni di freccia e le dichiarazioni di funzioni anonime:

  • Le funzioni freccia non hanno una proprietà prototipo.
  • Le funzioni freccia non possono essere costruite
  • Le funzioni freccia non associano un valore-questo, quindi otterrai l'istanza-questo dell'ambito principale
  • Le funzioni freccia non hanno accesso allo speciale arguments -oggetto

Per il tuo caso d'uso, è difficile dire se farà la differenza perché non possiamo vedere il codice, ma suppongo che non farà la differenza.

    
risposta data 06.06.2016 - 13:31
fonte
3

Il vantaggio principale è la sintassi più breve:

var sequence = source.map(t => t.length).filter(s => s > 5);

è più breve e più leggibile di:

var sequence = source
    .map(function (t) { return t.length; })
    .filter(function (s) { return s > 5; });

An arrow function expression has a shorter syntax compared to function expressions and lexically binds the this value

Fonte: MDN

    
risposta data 06.06.2016 - 13:48
fonte

Leggi altre domande sui tag