2017-06-02 2 views
1

Ich versuche, aus JavaScript-Module durch die Aktivierung des "Experimental Web Platform" Flag in Chrome Dev (v60, zum Zeitpunkt des Schreibens).`Exportstandard lassen foo = ...` wirft "Unexpected Strict-Modus reserviert Wort"

Wenn ich versuche, dieses Modul zu importieren:

export default let foo = 10; 

ich diese Fehlermeldung:

Uncaught SyntaxError: Unexpected strict mode reserved word 

Es ohne default Schlüsselwort gut funktioniert. Und das funktioniert gut zu:

let a = 10; 
export default a; 

MDN nicht explizit sagen, dass die export default ... Notation mit let erlaubt ist, var, const, etc., aber sie geben Beispiele mit Funktionen wie folgt aus:

export default function (…) { … }. 

Und Variablen wie folgt aus:

export let name1 = …, name2 = …, …, nameN; 

Frage: Ist es mit der aktuellen Spezifikation nicht möglich, reguläre Variablen mit dem Schlüsselwort default zu exportieren, wie dies mit Funktionen und Klassen möglich ist?

Antwort

2

exportstrictly defined syntax hat, ist die richtige Syntax für Standardexport

export default expression; 

let foo = 10 kein Ausdruck ist, sondern eine Feststellung. Es kann für benannte Exporte verwendet werden:

export let name1, name2, …, nameN; 

Für den Standard-Export-Namen wird nicht benötigt.

Ähnlich export default function (…) { … }, sollte es

export default 10; 
+0

Ahh, die ich sehen, nicht wusste, dass ich nur 10 'Exportstandard tun könnte;'! Aber warum haben sie dieses Beispiel in [dem MDN-Artikel] (https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export)? 'export let name1 = ..., name2 = ..., ..., nameN;' – JoeRocc

+0

Wie die Antwort sagt, ist es für * exports *, nicht für * default * ('default' ist eigentlich der Name). – estus

+0

"' default' ist eigentlich der Name "- macht Sinn! Vielen Dank! – JoeRocc