Eine Funktion in ES6 deklarieren?

10

Ich wollte meinen JavaScript-Code auf den neuen ES6-Standard "updaten", also habe ich mir angeschaut, wie Funktionen nun geschrieben und an einer globalen Funktion von mir ausprobiert werden, die sich so im "alten" es5 liest. p> %Vor%

Wenn ich nicht falsch liege, wäre die korrekte "Transformation" zu es6 wie folgt:

%Vor%

Aber mein ESLint sagt mir, dass meine logMessage nicht definiert ist und ich einen Fehler in meiner Konsole erhalte, vermisse ich etwas? Muss ich var, let oder const vor der logMessage deklarieren?

Ich weiß nicht, ob es wichtig ist, aber ich möchte diese Funktion auch von Datei Eins in Datei Zwei exportieren und die Funktion logMessage in einer anderen Funktion in Datei Zwei verwenden, ist da etwas, was ich dabei beachten muss ?

Danke für jede Hilfe!

Edit: Danke allen die Antworten haben mir sehr geholfen, mein Problem wurde behoben!

    
Nikolai Nowolodski 28.10.2016, 08:23
quelle

2 Antworten

14
  

Wenn ich nicht falsch liege, wäre die richtige "Transformation" zu es6 so.

Sie haben Unrecht.

Pfeilfunktionen sind eine neue Syntax mit anderem Verhalten . Sie sind nicht ein direkter Ersatz für Funktionsdeklarationen und Funktionsausdrücke (die beide noch in ES6 existieren).

  

Aber mein ESLint sagt mir, dass meine logMessage nicht definiert ist und ich einen Fehler in meiner Konsole erhalte, vermisse ich etwas? Muss ich var, let oder const vor der logMessage deklarieren?

Ja. Sie weisen einer Variablen etwas zu. Sie müssen die Variable zuerst deklarieren .

  

Ich möchte diese Funktion auch von Datei Eins in Datei Zwei exportieren

Wie Sie die Funktion definieren, hat keinen Einfluss auf Ihre Exportfähigkeit.

    
Quentin 28.10.2016, 08:26
quelle
11
%Vor%

... ist eine Funktionsdeklaration, die in es6 noch immer einwandfrei ist. Sie konvertieren Ihre Funktionsdeklaration in einen Funktionsausdruck, der in es5 so aussehen würde ...

%Vor%

... und dann in es6 ...

%Vor%

... also wird das Linting-Problem nicht durch es6-Syntax eingeführt, sondern durch Verwendung von Funktionsausdruck, der einer Variablen zugewiesen wird, die ohne var / let / const eine globale Variable ist. Es gibt auch einen Unterschied in der ursprünglichen Funktionsdeklaration, aber die Funktionsausdruckform muss vor dem Aufruf deklariert werden. Es gibt auch einen Unterschied darin, dass es6 Pfeilfunktionen den Kontext davon aus dem übergeordneten Bereich behalten, es ist also bemerkenswert, dass sie nicht 100% direkt für 1 Zuordnungen voneinander sind.

Kurze Antwort, ja, Variablen müssen mit var / let / const deklariert werden, um zu vermeiden, globale Variablen zu werden, egal ob es eine Funktion ist oder nicht.

%Vor%     
Billy Moon 28.10.2016 08:30
quelle