Heim >Web-Frontend >js-Tutorial >Was bewirkt das Ausrufezeichen in JavaScript-Funktionsausdrücken?

Was bewirkt das Ausrufezeichen in JavaScript-Funktionsausdrücken?

DDD
DDDOriginal
2024-12-20 13:03:17861Durchsuche

What Does the Exclamation Mark Do in JavaScript Function Expressions?

Das rätselhafte Ausrufezeichen in JavaScript-Funktionsausdrücken

Im Bereich des JavaScript-Codes sind Sie vielleicht auf einen merkwürdigen Anblick gestoßen: ein Ausrufezeichen vor einer Funktionsdeklaration. Dieser scheinbar unbekannte Aspekt hat eine tiefgreifende Bedeutung, die die eigentliche Natur der Funktion verändert.

Das Ausrufezeichen ! wandelt eine Funktionsdeklaration in einen Funktionsausdruck um. Das bedeutet, dass die Funktion nun als Wert behandelt wird, der einer Variablen zugewiesen, als Argument übergeben oder sogar von einer anderen Funktion zurückgegeben werden kann.

Um die Implikation zu verstehen, betrachten Sie den folgenden Code:

function foo() {}

Dies ist eine Standard-Funktionsdeklaration, die lediglich die Funktion definiert, sie aber nicht aufruft. Um die Funktion tatsächlich auszuführen, würden Sie sie so nennen:

foo()

Nun führen wir das Ausrufezeichen ein:

!function foo() {}();

Dieser scheinbar harmlose Zusatz verändert das Spiel. Das Ausrufezeichen verwandelt die Funktionsdeklaration in einen Ausdruck, der nun durch Anhängen von Klammern sofort aufgerufen werden kann. Die Priorität von Klammern ist höher als die des Ausrufezeichens, daher wird der Code wie folgt ausgeführt:

(function foo() {})()

Damit wird im Wesentlichen die gleiche Aufgabe erfüllt wie beim expliziten Aufruf im vorherigen Beispiel. Allerdings bietet es einen subtilen Vorteil: Es spart ein Byte pro Funktionsausdruck.

Darüber hinaus erfüllt das Ausrufezeichen noch einen anderen Zweck. Es zwingt den Ausdruck, einen booleschen Wert basierend auf dem Rückgabewert der Funktion zurückzugeben. Bei sofort aufgerufenen Funktionsausdrücken (IIFEs) ist der Rückgabewert jedoch normalerweise undefiniert, sodass das Ergebnis des Ausdrucks wahr ist. Dieser boolesche Wert wird normalerweise nicht verwendet, ist aber dennoch ein merkwürdiger Nebeneffekt des Ausrufezeichens.

Das obige ist der detaillierte Inhalt vonWas bewirkt das Ausrufezeichen in JavaScript-Funktionsausdrücken?. 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