Heim  >  Artikel  >  Web-Frontend  >  Sind \"(function () { }) ()\" und \"(function () { })()\" in JavaScript funktionell gleich?

Sind \"(function () { }) ()\" und \"(function () { })()\" in JavaScript funktionell gleich?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 08:53:02856Durchsuche

Are

Sind „(function () { }) ()“ und „(function () { })()“ in JavaScript funktionell gleich?

In JavaScript Die folgenden beiden Codeblöcke scheinen identische Ergebnisse zu liefern:

(function () {
    bar = 'bar';
    alert('foo');
})();

alert(bar);
(function () {
    bar = 'bar';
    alert('foo');
}());

alert(bar);

Beide Blöcke zeigen die Meldung „foo“ gefolgt von „bar“ an. Gibt es jedoch einen funktionalen Unterschied zwischen diesen beiden Codestrukturen?

Antwort

Codeblöcke sind identisch

Unter normalen Umständen "(Funktion ( ) { }) ()“ und „(function () { })()“ sind in JavaScript funktional identisch. Beide rufen eine anonyme Funktion auf und führen sie sofort aus. Die Funktion initialisiert die Balkenvariable und gibt die Meldung „foo“ aus.

Unterschiede mit anderer Syntax

Wenn dem Code jedoch zusätzliche Syntax hinzugefügt wird, können Unterschiede auftreten.

Fall 1: Funktionskonstruktorsyntax

Betrachten Sie den folgenden Code:

new (function () {
    this.prop = 4;
}) ().prop;

Dieser Code erstellt eine neue Instanz der Funktionsklasse und ruft die Prop-Eigenschaft der neuen Instanz ab. Es gibt den Wert 4 zurück.

Fall 2: Namespace-Syntax

Betrachten Sie den folgenden Code:

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

Dieser Code ruft den neuen Operator für die Class-Eigenschaft auf. Aufgrund der verschachtelten Klammern wird die Funktion normal aufgerufen und ihr Rückgabewert wird zum Erstellen einer neuen Instanz verwendet.

Das obige ist der detaillierte Inhalt vonSind \"(function () { }) ()\" und \"(function () { })()\" in JavaScript funktionell gleich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn