2016-09-19 3 views
5

Was ist besser zu tun ist: exportieren Sie eine const Pfeil Funktion, etwa so:Export const Pfeilfunktion oder Grundfunktion?

export const foo =() => 'bar' 

oder eine reguläre Funktion exportieren, etwa so:

export function baz() { 
    return 'bar'; 
} 

Sie kompilieren wie folgt:

exports.baz = baz; 
function baz() { 
    return 'bar'; 
} 
var foo = exports.foo = function foo() { 
    return 'bar'; 
}; 

Es sieht so aus, als würde die Verwendung der Funktion const/arrow eine zusätzliche Variable deklarieren (foo), was ein überflüssiges Extra zu sein scheint über die einfache Funktionsdeklaration.

+0

Dies ist ECMAScript 6 wird in ECMAScript 5 kompiliert, richtig? – qxz

+0

Die Frage geht davon aus, dass ES6-Code mit Babel zu ES5 transpiliert wird, dies stimmt möglicherweise nicht. – estus

+0

Ja, ich entschuldige mich dafür, dass ich nicht klar bin. Der ES6 wird über Babel in ES5 übertragen. – abustamam

Antwort

6

Die Unterschiede sind winzig. Beide deklarieren eine Variable.

  • A const variable Konstante ist auch in Ihrem Modul, während eine Funktionsdeklaration theoretisch
  • Ein Pfeil Funktion a function expression, not a function declaration ist überschrieben werden, und die Zuordnung zu Problemen für zirkuläre Abhängigkeiten führen kann
  • Eine Funktion Pfeil kann nicht be a constructor or use a dynamic this
  • Eine Pfeilfunktion ist ein paar Zeichen kürzer, wenn Sie einen kurzen Körper und ein paar Zeichen länger verwenden, wenn Sie einen Blockkörper verwenden.
+1

Also architektonisch gesehen, solange die Funktion keinen Konstruktor oder 'this' benötigt, sollte eine' const' Variable in Ordnung sein? Kannst du Punkt 2, re: zirkuläre Abhängigkeiten näher ausführen? – abustamam