Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Standardparameter in Javascript_Grundkenntnisse

Detaillierte Erläuterung der Standardparameter in Javascript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:33:151112Durchsuche

Einige Sprachen – wie Ruby, CoffeeScript und kommende JavaScript-Versionen – können beim Definieren einer Funktion Standardparameter deklarieren, wie zum Beispiel:

Code kopieren Der Code lautet wie folgt:

function myFunc(param1, param2 = "second string") {
console.log(param1, param2);
}

// 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:

Code kopieren Der Code lautet wie folgt:

Funktion myFunc(param1, param2) {
If (param2 === undefiniert) {
         param2 = "zweite Zeichenfolge";
}

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.

Code kopieren Der Code lautet wie folgt:

Funktion myFunc(paramObject) {
var defaultParams = {
         param1: „erste Zeichenfolge“,
         param2: „zweite Zeichenfolge“,
         param3: „dritte Zeichenfolge“
};

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:

Code kopieren Der Code lautet wie folgt:

Funktion myFunc(paramObject) {
var defaultParams = {
         param1: „erste Zeichenfolge“,
         param2: „zweite Zeichenfolge“,
         param3: „dritte Zeichenfolge“
};

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.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn