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

Was bewirkt das Ausrufezeichen in JavaScript-Funktionsausdrücken?

DDD
Freigeben: 2024-12-20 13:03:17
Original
906 Leute haben es durchsucht

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() {}
Nach dem Login kopieren

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()
Nach dem Login kopieren

Nun führen wir das Ausrufezeichen ein:

!function foo() {}();
Nach dem Login kopieren

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() {})()
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage