John Resig hat einen populären Blog-Eintrag zur teilweisen Bewerbung: Ссылка Er wird an vielen Stellen erwähnt, und hat
Der Code im Blogpost funktioniert jedoch nicht. Hier ist es:
%Vor%Nun, wenn Sie versuchen, dies in Ihrer Konsole auszuführen, wird es gut funktionieren. Wenn Sie jedoch versuchen, die Verzögerungsfunktion erneut zu verwenden, wird es nicht funktionieren. Versuchen Sie, dies in Ihrer Konsole auszuführen, nachdem Sie das erste Segment ausgeführt haben:
%Vor%Beachten Sie, dass die zweite Nachricht nicht angezeigt wird - die erste Nachricht. Natürlich, wenn Sie die Verzögerungsfunktion neu erstellen, funktioniert es, aber warum in aller Welt möchten Sie Ihre teilweise angewendete Funktion jedes Mal neu erstellen, wenn Sie es verwenden?
Nun, da dieser Blogbeitrag das zweite Google-Ergebnis für "partielle Anwendungsjavascript" ist und ziemlich populär zu sein scheint, bezweifle ich, dass er komplett kaputt ist. Auf der anderen Seite funktionieren viele Codebeispiele und die beliebte Bibliothek Prototype.js so, wie ich es erwarte - wiederverwendbare Teilanwendung. Seine Curry-Funktion, etwas höher auf der Seite, funktioniert genau so, wie ich es erwarte. Also:
Ist John Resigs Code falsch?
Ja. Selbst wenn Sie es bezweifeln, ist es einfach vollständig gebrochen.
Die Teilapplikation mit undefined
arbeitet nicht mehr als einmal, weil sie das geteilte args
-Array verändert. Und eine partielle Anwendung ohne undefined
funktioniert überhaupt nicht.
Es kann immer noch hilfreich sein, Callbacks oder ähnliches zu erzeugen, die nur einmal aufgerufen werden, aber das ist nicht sehr funktional.
Korrigiert:
%Vor% Beachten Sie, dass im Gegensatz zur Begrenzung der Länge von filledArgs
auf die Anzahl der teilweise angegebenen Argumente (einschließlich undefined
s) jetzt beliebig viele zusätzliche Argumente akzeptiert werden und diese nur auf ähnliche Weise wie bind
.
Oh, und während wir gerade dabei sind, hat John Resig auch den Begriff currying falsch macht er Teilapplikation mit seiner .curry
-Methode (Wikipedia war in 2008).
Tags und Links javascript partial-application