Wann sollte ich die Syntax "(function () {...}) ();"?

8

Meine Abfrage wird in Fällen verwendet, in denen "(function () {...}) ();" Da ich kein Plugin bin. Zum Beispiel " Ссылка "

%Vor%

Oder

%Vor%

Danke.

    
andres descalzo 31.07.2009, 13:11
quelle

4 Antworten

24

Dies wird gemacht, um Namenskonflikte zu vermeiden.

Wenn Sie eine Funktion deklarieren, hat diese Funktion einen eigenen Namensraum für Variablen. Indem Sie den Code in eine Funktion einfügen, die sofort aufgerufen wird, vermeiden Sie das Überschreiben globaler Variablen mit Ihren eigenen Werten.

In diesem Fall wird s und sc einen Wert zugewiesen. Wenn Sie dies im globalen Gültigkeitsbereich getan hätten und andere Skripts bereits Variablen mit diesen Namen für einen anderen Zweck verwendet hätten, würden diese anderen Skripts fehlschlagen. Durch die Einführung des neuen Geltungsbereichs beziehen sich die Bezeichner s und sc jetzt auf andere (lokal gebundene) Variablen als die Variablen s und sc , die im globalen Gültigkeitsbereich existieren.

    
rix0rrr 31.07.2009, 13:17
quelle
3

(function() {...})(); ist eine selbstaufrufende anonyme Funktion, d. h. eine Funktion ohne Namen, die sofort ausgeführt wird. Da JavaScript über einen Funktionsumfang verfügt, schränkt die Verwendung von selbstaufrufenden anonymen Funktionen den Gültigkeitsbereich von Variablen innerhalb der Funktion auf die Funktion selbst ein, wodurch Konflikte vermieden werden, die andernfalls auftreten könnten.

In jQuery wird eine selbstaufrufende anonyme Funktion häufig von Plugin-Authern verwendet, um auf das jQuery-Objekt mit dem $ -Zeichen innerhalb der Funktion zu verweisen. Zum Beispiel

%Vor%     
Russ Cam 31.07.2009 13:24
quelle
2

Idiom (function() {...})(); begrenzt den Gültigkeitsbereich Ihrer Variablen. Im ersten Fall ist also s (und sc , tp etc) nirgendwo außerhalb des Funktionskörpers verfügbar. Im zweiten Fall können Sie darauf zugreifen. So hält (function() {...})(); Sie von der Namensraumverschmutzung ab. Ob Sie das brauchen, ist eine andere Frage. Sie können gerne etwas wie "scope javascript" googlen. Es gibt einen schönen Artikel .

    
Rorick 31.07.2009 13:19
quelle

Tags und Links