JavaScript: (Immediate Function)(); ?!

Veröffentlicht von Sascha am

(function(){
    console.log('hallo, ich bin eine immediate function');
}());

Da fragt man sich doch, was soll das? Ganz einfach:
Eine immediate function ist im Prinzip eine anonyme Funktion, welche sich nach ihrer Definition sofort ausführt und anschließend verwirft.
Aber was macht man mit einer anonymen Funktion welche sich sofort Ausführt und anschließend nicht mehr zur Verfügung steht?

Gehen wir davon aus, dass wir innerhalb einer Webseite eine Aufwendige Prozedur durchführen müssen. Diese Prozedur benötigt eine Menge Funktionen und globale Variablen, wird jedoch nur ein einziges Mal ausgeführt.

Ein kleines Beispiel:

 function doSometing() {
    // ...
 }

 var someValue, anotherValue;

 // etc...

Alle diese Elemente, welche lose innerhalb eines Script-Tags definiert werden, werden dem globalen Namensraum this (bzw. in diesem Fall sogar dem Root-Element „window“) zugewiesen.
Was dies zu bedeuten hat wenn mehrere Entwickler oder Plugins von Drittanbietern mit im Spiel sind muss nicht erläutert werden…

Also wie kann uns eine immediate function dabei helfen? Eine immediate function fungiert auch als eine closure. Es können also Elemente in ihr eingeschlossen werden was verhindert das der globale Namensraum verschmutzt wird.

(function(){
function doSometing() {
    // ...
 }

 var someValue, anotherValue;

 // etc...

}());

Der gesamte Code innerhalb der Closure wird zu beginn der Seite ausgeführt und erledigt seine Aufgabe. Anschließend steht er nicht mehr zur Verfügung, hat den globalen Namensraum nicht verschmutzt und verbraucht auch keinen Speicher mehr. Optimal für Initialisierungscode!


Kommentar verfassen

%d Bloggern gefällt das:

Durch das Fortsetzen der Benutzung dieser Seite, stimmst du der Benutzung von Cookies zu. Weitere Informationen

Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Außerdem geben wir Informationen zu Ihrer Nutzung unserer Website an unsere Partner für soziale Medien, Werbung und Analysen weiter.

Schließen