Welche Vorteile bietet die Verwendung anonymer Funktionen anstelle von benannten Funktionen für Callbacks und Parameter im JavaScript-Ereigniscode?

Ich bin neu-isch zu JavaScript. Ich verstehe viele der Konzepte der Sprache, die ich gelesen habe bis auf die prototype-Vererbung-Modell, und ich bin bekommen meine Pfeife mit mehr und mehr interaktive front-end-Zeug. Es ist eine interessante Sprache, aber ich bin immer ein wenig deaktiviert ist, indem Sie die callback-spaghetti, die typisch für viele nicht-triviale Interaktion Modelle.

Etwas, das hat immer schien mir seltsam ist, dass trotz der besseren Lesbarkeit Alptraum, das ist ein nest von JavaScript verschachtelte callbacks, die eine Sache, die ich sehr selten sehe, in viele Beispiele und tutorials ist der Einsatz von vordefinierten Funktionen als callback-Argumente. Ich bin ein Java-Programmierer bei Tag, und verwerfen die stereotype jabs über Enterprise-y Namen für Einheiten von code eines der Dinge, die ich bin gekommen, um zu genießen, zum arbeiten in einer Sprache, mit einer starken Auswahl an ausgereifter IDE ist, dass die Verwendung sinnvoll, wenn lange Namen machen können, der Absicht und Bedeutung der code viel übersichtlicher, ohne dass es mehr schwierig, wirklich produktiv zu sein. Also warum nicht verwenden Sie den gleichen Ansatz beim schreiben von JavaScript-code?

Gibt es Gedanken, die ich kann kommen mit Argumenten, sowohl für als auch gegen diese Idee, aber meine Naivität und Neuheit der Sprache beeinträchtigt mich nicht erreichen irgendwelche Schlussfolgerungen zu ziehen, warum, das wäre gut auf der technischen Ebene.

Vorteile:

  • Flexibilität. Eine asynchrone Funktion mit einem callback-parameter könnte erreicht werden durch eine von vielen verschiedenen code-Pfade und es könnte sein, gehetzt zu haben, um schreiben Sie eine benannte Funktion zu berücksichtigen, für jedes einzelne mögliche edge-Fall.
  • Geschwindigkeit. Es spielt stark in der hacker-Mentalität. Bolt Dingen auf, bis es klappt.
  • Alle anderen tun es
  • Kleinere Dateigrößen, auch wenn so trivial, aber jedes bisschen zählt im web.
  • Einfacher AST? Ich würde davon ausgehen, dass anonyme Funktionen werden zur Laufzeit generiert und damit der JIT nicht der dreck über die mit der Zuordnung der Namen zu den Anweisungen, aber ich kann nur raten an dieser Stelle.
  • Schneller Versand? Nicht sicher, über diese ein. Raten wieder.

Nachteile:

  • Es ist scheußlich und unleserlich
  • Er fügt zur Verwirrung, wenn Sie verschachtelt sind Nüsse tief in einem Sumpf von Rückrufen (die, um fair zu sein, bedeutet wohl, Sie schreiben schlecht konstruierten code, um mit zu beginnen, aber es ist durchaus üblich).
  • Für jemand ohne funktionalen hintergrund kann es eine bizarre Konzept zu grok

Mit so vielen modernen Browsern zeigt die Fähigkeit zum ausführen von JavaScript-code deutlich schneller als vorher, ich bin andernfalls zu sehen, wie irgendwelche belanglosen Art der performance-Gewinn könnte man mit anonymen Rückrufe wäre eine Notwendigkeit. Es scheint, dass, wenn Sie in einer situation, wo Sie eine benannte Funktion machbar ist (vorhersagbares Verhalten und den Pfad der Ausführung), dann gäbe es keinen Grund, nicht zu.

Gibt es irgendwelche technischen Gründe oder fallen, ich bin mir nicht bewusst, das macht diese Praxis so alltäglich für einen Grund?

InformationsquelleAutor der Frage Doug Stephen | 2012-04-22

Schreibe einen Kommentar