;(function ($, document) {}) - was bedeutet das?

Hallo, in den Beispielplugins von shopware ist der JavaScript-Code manchmal folgendermaßen „eingekapselt“: ;(function ($, document) {...}) Was ist das für eine merkwürdige Konstruktion? Warum am Anfang Semikolon und Klammer ;(? Was bedeutet die Übergabe des $? Kann eigentlich ein bisschen JavaScript, kann damit aber gar nichts anfangen. Für Tipps wäre ich sehr dankbar. Vielleicht auch einfach ein paar Begriffe, nach denen man suchen kann.

Lieber Gutverkaufen, :slight_smile: :slight_smile: das Stichwort ist Immediately Invoked Function Expression (IIFE). ;(function ($, document) { Anweisungen... })(jQuery, document); leistet das gleiche wie ;function js\_start($, document) { Anweisungen... }) js\_start(jQuery, document); Es wird eine Funktion mit den Parametern jQuery und document aufgerufen. Im ersten Fall ist es eine anonyme Funktion. Die Übergabe von jQuery ist nötig, weil es Fälle gibt, in denen die Funktion das Alias nicht kennt (alternativ kannst du auch auf das Alias verzichten und jQuery ausschreiben). jQuery wird sozusagen zur Sicherheit übergeben. Diese Fälle kommen in shopware nicht vor, deswegen funktioniert das auch wenn du die beiden Parameter nicht übergibst, also: ;(function () { Anweisungen... })() beziehungsweise ;function js\_start() { Anweisungen... }) js\_start(); Du könntest das $-Zeichen auch durch einen beliebigen anderen Variablennamen ersetzen (dann natürlich auch innerhalb der Funktion). Ist aber nur sinnvoll, wenn du die Lesbarkeit für andere verringern willst. Das ; am Anfang hat auch keine wirkliche Funktion. Wahrscheinlich auch irgendwie zur Sicherheit. Hoffe geholfen zu haben Liebe Grüße Kerstin :slight_smile:

1 „Gefällt mir“

wow, das nenne ich eine fundierte Antwort. Funktioniert genau so, wie du es sagst. Vielen Dank Kerstin