Lose Typenprüfung
Leicht zu schreiben, aber 0
, ''
, false
, null
y undefined
wird in einen Standardwert umgewandelt, was möglicherweise nicht das erwartete Ergebnis ist.
function myFunc(requiredArg, optionalArg) {
optionalArg = optionalArg || 'defaultValue';
}
Strenge Typenprüfung
Länger, deckt aber die meisten Fälle ab. Der einzige Fall, in dem es fälschlicherweise einen Standardwert zuweist, ist, wenn wir undefined
als Parameter.
function myFunc(requiredArg, optionalArg) {
optionalArg = typeof optionalArg !== 'undefined' ? optionalArg : 'defaultValue';
}
Variable Argumente prüfen
Fängt alle Fälle ab, ist aber am schwerfälligsten zu schreiben.
function myFunc(requiredArg, optionalArg1, optionalArg2) {
optionalArg1 = arguments.length > 1 ? optionalArg1 : 'defaultValue';
optionalArg2 = arguments.length > 2 ? optionalArg2 : 'defaultValue';
}
ES6
Leider ist die Browserunterstützung im Moment sehr schlecht
function myFunc(requiredArg, optionalArg = 'defaultValue') {
}
10 Stimmen
openjs.com/articles/optional_function_arguments.php
6 Stimmen
Das ist interessant. Übergabe Argumente als ein assoziatives Array scheint ein guter Weg, um mehr als ein paar Argumente zu behandeln.
1 Stimmen
Das ist genau das, was ich in den meisten Fällen tue. Meine Funktionen mit mehr als einem Argument erwarten ein Objektliteral.
2 Stimmen
@slf Ich glaube, Ihr Kommentar ist übersehen worden, deshalb habe ich eine Antwort über
arguments
in javascript für die Googler.2 Stimmen
Siehe auch: stackoverflow.com/questions/894860/