Jquery-Quellcode verstehen

7

Ich habe kürzlich begonnen, tiefer in JavaScript einzutauchen und bin auf dieses Code-Konstrukt in JQuery gestoßen.

%Vor%

Lesen auf Stack-Überlauf (und anderswo) Ich bin zu dem Schluss gekommen, dass dies das gleiche wie

ist %Vor%

Habe ich meine Annahme richtig? Wenn ja, was sind die Vorteile der ersten? (außer verwirrende newbs)

    
Elija 02.10.2010, 16:47
quelle

3 Antworten

16

Es gibt mehrere Dinge, die Sie wissen müssen, um einen Sinn zu finden:

  1. Es ist eine anonyme Funktion, die einfach bedeutet, dass sie keinen Namen hat.
  2. Die Funktion wird unmittelbar nach ihrer Deklaration aufgerufen. Sie sehen die offene Klammer in Zeile 2 unmittelbar nach der Funktionsdefinition? Das heißt, "diese Funktion aufrufen".
  3. Nur ein Parameter wird an die Funktion übergeben. Dieser Parameter ist "window", der Name des globalen Bereichs innerhalb eines Browsers.
  4. Die tatsächlich aufgerufene Funktion erwartet * 2 * -Parameter, aber wir rufen sie mit einem an. Mit Javascript können Sie Funktionen mit mehr oder weniger Parametern aufrufen, als die Funktion tatsächlich erwartet. Es gibt Möglichkeiten, zu der Liste der übergebenen Parameter zu gelangen.
  5. Da wir nur einen Parameter übergeben, wird der zweite Parameter automatisch auf "undefined" gesetzt. "undefined" ist ein spezieller Javascript-Wert, der heißt, machen Sie sich bereit, "undefined".
  6. Zufällig haben wir auch unseren zweiten Parameter mit dem Namen "undefined". In der Tat haben wir eine lokale Variable (Parameter sind sehr ähnlich wie lokale Variablen), die benannt undefiniert und deren Wert nicht definiert ist.
  7. Warum haben wir das überhaupt getan? Es ist eine Möglichkeit sicherzustellen, dass innerhalb unserer anonymen Funktion, wenn wir uns auf "undefiniert" beziehen, der Wert "undefiniert" wirklich ist. Wenn wir das nicht getan hätten und ein verrückter Code außerhalb unseres Bereichs "undefiniert" neu definiert hätte (indem wir etwas wie "undefiniert = 42" sagten), würden wir Code schreiben, auf den wir uns beziehen, undefiniert, aber wir wären es tatsächlich auf 42 Bezug nehmend. Diese Spielereien, die 1 Parameter überschreiten, aber 2 erwarten, und das zweite unbestimmt nennen, schützen uns vor solchem ​​Unsinn.

Ich hoffe, das ist klar, lass es mich wissen, wenn es nicht ist. Ich habe alles aus dem oben erwähnten Video von Paul Irish gelernt.

    
Charlie Flowers 24.02.2011 21:51
quelle
5

Dies ist eine anonyme Funktion. Es ist erstellt und geht dann aus dem Rahmen, was hier der Vorteil ist. Es wird sofort erstellt und instanziiert. Das Gute daran ist, dass es nicht mit irgendeiner Funktion im globalen Namespace kollidiert und somit nichts auslöschen kann, was Sie auf der Seite enthalten haben.

    
Scott 02.10.2010 16:51
quelle
1

Es ist eine anonyme Funktion, es hat einige Vorteile, als wäre es nur im aktuellen Bereich aktiv. Sie können hier mehr darüber lesen.

    
Ólafur Waage 02.10.2010 16:53
quelle

Tags und Links