Einige Sprachen – wie Ruby, CoffeeScript und kommende JavaScript-Versionen – können beim Definieren einer Funktion Standardparameter deklarieren, wie zum Beispiel:
// Ausgaben: „erste Zeichenfolge“ und „zweite Zeichenfolge“
myFunc("erster String");
// Ausgaben: „erster String“ und „zweiter String Version 2“
myFunc("erster String", "zweiter String Version 2");
Leider ist diese Schreibweise in der aktuellen Javascript-Version ungültig. Was können wir also tun, um dies zu erreichen, indem wir unser vorhandenes Toolset nutzen?
Die einfachste Lösung ist so:
console.log(param1, param2);
}
// Ausgaben: „erster String“ und „zweiter String Version 2“
myFunc("erster String", "zweiter String Version 2");
Tatsache ist, dass ein ausgelassener Parameter beim Zugriff immer „undefiniert“ ist. Dies ist eine gute Lösung, wenn Sie nur einen Parameter haben, aber was ist, wenn Sie mehr als einen haben?
Wenn Sie mehr als einen Parameter haben, können Sie ein Objekt als Parameter verwenden, was den Vorteil hat, dass jeder Parameter einen eindeutigen Namen hat. Wenn Sie einen Objektparameter übergeben, können Sie auf die gleiche Weise einen Standardwert deklarieren.
var finalParams = defaultParams;
// Wir durchlaufen jede Eigenschaft des paramObject
for (Var-Schlüssel in paramObject) {
// Wenn die aktuelle Eigenschaft nicht geerbt wurde, fahren Sie fort
If (paramObject.hasOwnProperty(key)) {
// Wenn die aktuelle Eigenschaft definiert ist,
// füge es zu finalParams hinzu
If (paramObject[key] !== undefiniert) {
finalParams[key] = paramObject[key];
}
}
}
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
}
myFunc({param1: "Mein eigener String"});
Das ist etwas umständlich. Wenn Sie diese Methode an vielen Stellen verwenden, können Sie eine Wrapper-Funktion schreiben. Glücklicherweise verfügen viele Bibliotheken jetzt über verwandte Methoden, z. B. die Extend-Methode in jQuery.
Im Folgenden wird die Extend-Methode von Underscore verwendet, um das gleiche Ergebnis wie oben zu erzielen:
var finalParams = _.extend(defaultParams, paramObject);
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
}
// Ausgaben:
// „Mein eigener String“ und „zweiter String“ und „dritter String“
myFunc({param1: "Mein eigener String"});
So können Sie Standardparameter in aktuellen Javascript-Versionen erhalten.
Wir freuen uns über Kritik und Korrektur etwaiger Ungenauigkeiten im Artikel.