Nur damit es kein Missverständnis gibt, geht es bei dieser Frage nicht darum, optionale Parameter in einer JS-Funktion zuzulassen.
Meine Frage wird durch die Funktion jQuery parseXML
motiviert, die wie folgt in jQuery.js
definiert ist:
Innerhalb des Rumpfes der Funktion werden die Parameter xml
und tmp
vor ihrer Verwendung zugewiesen. Das bedeutet, dass sie als lokale Variablen verwendet werden, sodass die Funktion wie folgt definiert werden könnte:
Was ist der Vorteil der ersten Möglichkeit, außer ein paar Zeichen in der verkleinerten Version von jQuery.js
zu speichern?
Wenn wir zwei Funktionen definieren ...
%Vor% ... sie melden verschiedene length
s ...
Es ist sehr selten, dieses wenig bekannte Feature von Javascript zu verwenden.
Aber abgesehen davon, ein paar Bytes von der verkleinerten Dateigröße zu rasieren, ist dies der einzige andere Grund, den ich mir vorstellen kann.
Im Allgemeinen können Sie unbenutzte Parameter zu einer Funktion hinzufügen, um einer vorab vereinbarten Funktionssignatur zu entsprechen, wenn Sie diese Funktion an eine andere Funktion als Rückruf oder als Fortsetzung weitergeben und der API-Vertrag sagt "Ich rufe an Ihr Callback mit diesen Parametern ", und Sie brauchen nicht alle Parameter zu tun, was Sie im Callback tun wollen. (Dies würde für jede Sprache gelten, nicht nur für JavaScript.)
In diesem speziellen Fall weiß ich nicht. Wie wird parseXML verwendet? Wird es direkt aufgerufen oder als Argument für andere Funktionen verwendet, die eine 3-Argument-Funktion erwarten könnten?
(xml & tmp used internally)
Sie missverstehen die Bedeutung. Sie bedeuten nicht "intern" innerhalb der Funktion. Sie meinen intern innerhalb der Bibliothek. Die öffentliche API dieser Funktion hat einen Parameter (Daten). Die private API dieser Funktion hat 3 Parameter.
Dies ist in jQuery üblich. Im Allgemeinen können diese Funktionen mit und ohne Nebenwirkungen arbeiten. Die API ohne Nebenwirkungen ist öffentlich und jQuery selbst wird mehr Parameter übergeben, um Nebenwirkungen zu verursachen, die Sie als Benutzer nicht tun sollten.
Tags und Links javascript jquery