Ich habe hier gelesen , dass ich nach Standardexporten kein Semikolon einfügen muss. Dieses Programm hat also ein unnötiges Semikolon:
export default function() {};
Aber wenn mein Modul so weitergeht:
export default function() {};
(() => {
// creating a new function scope
})();
dann kann ich das Semikolon nicht verlassen.
Also, was ist hier los? Die Grammatik sagt, ich brauche das Semikolon nicht, aber wenn ich es lasse, bedeutet der Code etwas anderes?
AKTUALISIEREN:
Wenn ich das Semikolon verlasse:
export default function() {}
(() => {
// creating a new function scope
})();
dann wird die exportierte Funktion aufgerufen, anstatt exportiert zu werden. babeljs.io kompiliert letzteres in:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = (function () {})(function () {
// creating a new function scope
})();
;
module.exports = exports["default"];
Genauer gesagt wird nach dem Aufruf ein Fehler ausgelöst, da auch der Rückgabewert der ersten Funktion aufgerufen wird (dies ist jedoch keine Funktion). Der Fehler, den ich in Chrome bekomme, ist folgender:
Uncaught TypeError: (intermediate value)(...) is not a function(…)
Sie müssen kein Semikolon nach einem hinzufügen, export default
wenn eine Funktionsdeklaration folgt . Das sagt die Grammatik .
Babel ist falsch, ich habe einen Fehler dagegen eingereicht . Dieser Code sollte so interpretiert werden, dass die Funktion exportiert und das IIFE dann als IIFE ausgeführt wird.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen