Gibt es einen Vorteil, eine Funktion mit einer anonymen Funktion zu umhüllen? Ich meine ein bestimmtes Beispiel:
%Vor%und mit der eingepackten Funktion:
%Vor%In beiden Fällen ist die Ausgabe identisch. Gibt es einen Unterschied? Die zweite Version ist, was ich gelernt habe, js. Ich erkenne, dass eine solche Form nützlich ist, wenn wir Schließungen brauchen, aber hier?
Das zweite Formular ermöglicht es Ihnen, Argumente an callback
zu übergeben, während das erste Formular dies nicht tut.
Wenn Sie keine Argumente übergeben, ist es kein Vorteil, die Funktion zu übernehmen.
Um gründlicher zu sein,
Function.prototype.bind
kann uns bei der ersten Form helfen:
%Vor%
Sie müssen diese Methode jedoch Browsern zur Verfügung stellen, die das Ereignis nicht unterstützen (Opera, Safari und IE 8, 7, 6). Der Code zum Shiming der Methode ist auf der MDN-Dokumentationsseite verfügbar.
Durch das Umbrechen einer Funktion in einer anonymen Funktion können Komplikationen mit dem Schlüsselwort this
vermieden werden. ( lese über sie auf quirksmode )
Zum Beispiel:
%Vor%Das Umschließen einer Funktion in einer anonymen Funktion ist auch ein Schlüssel für die Verwendung von Closures in JavaScript:
%Vor%Wrapping ist nützlich, wenn Sie eine separate Identität benötigen.
%Vor% Zum Beispiel funktionieren einige Funktionen wie addEventListener
auf Identität.
Beim zweiten Aufruf von addEventListener
heißt es: "Ich habe bereits ein beep
; ich muss kein weiteres hinzufügen." Wenn das Ereignis myEvent
ausgelöst wird, erhalten Sie nur einen Piepton. Wenn Sie zwei Signaltöne möchten, müssen Sie sicherstellen, dass die Callbacks unterschiedlich sind.
Jede anonyme Funktion ist anders, also haben Sie dieses Mal zwei Funktionen registriert (die dasselbe tun). Jetzt piept es zweimal.
Tags und Links javascript