JS: Funktioniert die Standardwerte der Argumente

8

In einigen Sprachen können Sie Standardwerte für die Argumente der Funktion festlegen:

%Vor%

Wie machen Sie das in JavaScript?

    
SaltLake 22.01.2011, 23:30
quelle

4 Antworten

16

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:

%Vor%

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,

zu verwenden     
James Long 22.01.2011, 23:37
quelle
5

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:

%Vor%

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:

%Vor%     
Peter Rust 23.01.2011 01:23
quelle
1

Sie müssten dies im Funktionskörper tun:

%Vor%

Eine andere Möglichkeit, sie auf undefined oder null zu testen, ist wie folgt:

%Vor%

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.

    
user113716 22.01.2011 23:32
quelle
1

Ab ES2015 (ES6) können Standardparameter wie folgt festgelegt werden:

%Vor%     
JoeTidee 16.02.2017 23:51
quelle

Tags und Links