molily: Notation: "(function() {...}) ();"

Beitrag lesen

Hallo,

die Frage gabs schonmal:
</archiv/2006/9/t137561/>
</archiv/2006/9/t137561/#m893621>

Es geht darum, den globalen Scope »rein« zu halten, aber trotzdem in gezielt globalen Funktionen interne Funktionen ansprechen zu können.

(function() {

function _$(els) {}
  window.$ = function() {
    return new _$(arguments);
  }
})();

  
\_$ ist durch die Verschachtelung (Closure) in window.$ verfügbar, ohne dass es im globalen Scope liegt. »Interne« Funktionen müssen somit nicht öffentlich gemacht werden.  
  

> Ich sehe da `(function(){})();`{:.language-javascript} - kann mir einer sagen, was "das" ist?  
  
Es wird eine namenlose Funktion notiert und ausgeführt. Mehr nicht.  
Variablen darin sind lokal und von außen nicht sichtbar; das, was überbleibt, sind globale Variablen, die ausdrücklich an window geheftet werden. Der Witz ist nun, dass diese globalen Funktionen durch die Closure aber Zugriff auf die lokalen Variablen haben, auch nach der Ausführung der anonymen Funktion.  
  
Mathias

-- 
[SELFHTML aktuell Weblog](http://aktuell.de.selfhtml.org/weblog/)