Perché ES6 non ha funzioni di freccia sottile?

13

ES6 ha aggiunto le funzioni fat-arrow ( => ), che presentano due differenze principali rispetto alle normali funzioni:

  • sintassi più breve (compreso il ritorno implicito se si utilizza un corpo con una sola espressione)
  • eredita this dall'ambito circostante

Queste sono entrambe caratteristiche molto utili, ma mi sembrano completamente separate nel loro valore e applicazione - a volte ne voglio uno, o l'altro, o entrambi, o nessuno dei due. Sembra strano che se voglio usare una funzione di sintassi breve, I ha per usare anche il comportamento di modifica di this . E viceversa. Non vedo perché queste due funzionalità siano implementate come una singola aggiunta alla lingua.

Che cosa succede se voglio usare una breve funzione di sintassi per il suo ritorno implicito e la sua brevità (in alcuni contesti in cui un function (..) { return ...} sarebbe leggermente meno leggibile), ma voglio usare this nella mia funzione per fare riferimento a il contesto di chiamata? Non c'è modo di farlo.

CoffeeScript ha funzioni di stile -> e => , e apparentemente ES6 ha preso in prestito lo stile => da lì. Quindi la mia domanda è: perché ES6 non ha preso in prestito lo stile -> ?

    
posta callum 29.12.2015 - 13:30
fonte

1 risposta

22

Vedi la proposta per aggiungere le funzioni freccia: link 1

Quello che dice è:

However, we don’t want CoffeeScript’s ->, it’s confusing to have two arrows and dynamic this binding is an oft-fired footgun.

Puoi anche vedere alcune discussioni su una versione precedente della proposta che aveva il - > anche la sintassi: link

Sembra scendere a quanto segue:

  1. Avere due sintassi di freccia con semantica sottilmente differente aumenterebbe la complicazione e la confusione.
  2. La dinamica di questo legame di function () e -> è stata considerata raramente utile, e un foot-gun.
  3. Se hai davvero bisogno di questa associazione dinamica, puoi comunque usare function (), la cui sintassi di scelta rapida non è molto utile.
risposta data 29.12.2015 - 17:37
fonte

Leggi altre domande sui tag