Semikolon nach Standardexport

Tamas Hegedus

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(…)
Benjamin Gruenbaum

Sie müssen kein Semikolon nach einem hinzufügen, export defaultwenn 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.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

String nach Semikolon ersetzen

React Components sind nach dem Standardexport null

Postgres Regex, alles nach Semikolon

Semikolon (;) nach Klassenkonstruktoren oder -destruktoren

Das Modul hat nach der Konvertierung in Typescript keinen Standardexport

enthält auch nach dem korrekten Import in React keinen Standardexport

IDE erwartet Semikolon nach geschweiften Klammern

Löschen aller Zeichen nach einem Semikolon

Wert nach Semikolon ohne Komma abgleichen

Entfernen von Varchar(s) nach einem Semikolon

Fehler reagieren - Semikolon nach der Rendermethode erwartet?

Template-Klasse – Semikolon nach Konstruktor?

Was macht ein Semikolon nach einem bedingten Block in C #?

Warum kein Semikolon nach Ok (()) am Ende einer Funktion in Rost?

erwartet Newline oder Semikolon + unerwartetes Token nach dem Funktionsnamen

Gibt es einen Grund, nach Panik ein Semikolon zu setzen?

Warum gibt es ein Semikolon? nach matplotlibs plot () Funktion?

Wird nach einer Funktionsdeklaration in C ++ kein Semikolon (';') benötigt?

Benötige ich ein Semikolon nach einer benannten Exportfunktionsdeklaration?

Warum ist das Semikolon nach der return-Anweisung optional?

Wann sollte ich nach geschweiften Klammern ein Semikolon verwenden?

Warum sollte ich nach jeder Funktion in Javascript ein Semikolon verwenden?

Warum ist nach einer gekräuselten Klammer kein Semikolon erforderlich?

So benötigen Sie ein Semikolon nach einem Makro

RegEx, das Zeichen nach dem Semikolon in derselben Zeile entspricht

Sollte ich nach ES7-Dekorateuren ein Semikolon setzen?

Ist ein Semikolon nach NAME in `for NAME do ...` verboten?

Nach kurzer Zeit akzeptiert Visual Studio kein Semikolon mehr

Warum gibt es nach einem Makroaufruf kein Semikolon?

TOP Liste

heißlabel

Archiv