In JavaScript wird alles, was nicht gesetzt ist, mit dem Wert undefined
versehen. Das bedeutet, wenn Sie Standardwerte für eine Funktion festlegen möchten, muss Ihre erste Zeile geprüft werden, um zu sehen, ob diese Werte nicht definiert sind:
Sie können etwas Abkürzung nehmen, wenn Sie ungefähr wissen, was diese Werte sein werden:
%Vor% Wenn diese Argumente jedoch falsch sind, werden sie ersetzt. Das heißt, wenn arg1 eine leere Zeichenfolge ist, wird null
, undefined
, false
oder 0
auf 50 gesetzt. Seien Sie also vorsichtig, wenn Sie sich dafür entscheiden,
Ich bevorzuge die == null
Prüfung anstelle von typeof(arg1) === undefined
(wie die jQuery Bibliothek intern: Ссылка ). Es ist nicht nur prägnanter, es behandelt auch sowohl null als auch undefiniert, so dass der Client-Code in null
übergeben werden kann und der Standardwert angewendet wird.
Es ist auch möglich, die Funktion in eine andere Funktion zu verpacken, die Standardwerte liefert. Die Bibliothek prototypejs hat eine Funktion, die argumentNames()
liefert (oder wenn Sie keinen Prototyp verwenden möchten, können Sie einfach die Implementierung ausleihen - es wird nur eine Regex auf die Ergebnisse der Funktion toString()
angewendet).
Du könntest so etwas tun:
%Vor% Und die Implementierung von defaults()
würde etwa so aussehen:
Natürlich ist das der ungeprüfte Code und die Art, wie er geschrieben wurde, er benötigt die Prototype-Bibliothek. Aber alles in allem, die == null
-Ansatz innerhalb der Funktion ist natürlicher für Javascript, ist einfacher zu debuggen (Sie haben keine andere Funktionsschicht, um durch zu gehen), und ich finde es einfacher zu lesen:
Sie müssten dies im Funktionskörper tun:
%Vor% Eine andere Möglichkeit, sie auf undefined
oder null
zu testen, ist wie folgt:
Einige Leute mögen es nicht, weil es möglich ist, den Wert von undefined
zu überschreiben, da es nur eine globale Eigenschaft ist. Solange es nicht überschrieben wird, würde dies gut funktionieren. Wenn die Parameter null
oder undefined
sind, werden sie auf einen Standardwert gesetzt.
Tags und Links javascript arguments function