Was heißt dieses JavaScript-Muster und warum wird es verwendet?

Ich studiere THREE.js und bemerkte ein Muster, in dem Funktionen wie folgt definiert sind:

var foo = ( function () {
    var bar = new Bar();

    return function ( ) {
        //actual logic using bar from above.
        //return result;
    };
}());

(Beispiel siehe raycast MethodeHie).

Dasnorma Variation einer solchen Methode würde so aussehen:

var foo = function () {
    var bar = new Bar();

    //actual logic.
    //return result;
};

Vergleichen der ersten Version mit demnorma Variation, die erste scheint sich darin zu unterscheiden:

It weist das Ergebnis einer selbstausführenden Funktion zu. Es definiert eine lokale Variable innerhalb dieser Funktion.It gibt das @ zurütatsächlic Funktion mit Logik, die die lokale Variable verwendet.

Der Hauptunterschied besteht darin, dass in der ersten Variante der Balken bei der Initialisierung nur einmal zugewiesen wird, während die zweite Variante diese temporäre Variable bei jedem Aufruf erstellt.

Meine Vermutung, warum dies verwendet wird, ist, dass es die Anzahl der Instanzen für bar begrenzt (es wird nur eine geben) und somit Speicherverwaltungsaufwand spart.

Meine Fragen

Ist diese Annahme richtig? Gibt es einen Namen für dieses Muster?Warum wird das verwendet?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage