2014-10-26 6 views
39

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, die Objekt-Destrukturierung von Standardparametern zu verwenden, ohne sich Sorgen darüber machen zu müssen, dass das Objekt teilweise definiert ist. Beachten Sie Folgendes:ES6 Object Destructuring Default Parameter

(function test({a, b} = {a: "foo", b: "bar"}) { 
 
    console.log(a + " " + b); 
 
})();

Als ich das nennen mit {a: "qux"}, zum Beispiel, ich sehe qux undefined in der Konsole wenn das, was ich wirklich will qux bar ist. Gibt es eine Möglichkeit, dies zu erreichen, ohne alle Eigenschaften des Objekts manuell zu überprüfen?

Antwort

79

Ja. Sie können „Standardwerte“ in Destrukturierung auch verwenden:

(function test({a = "foo", b = "bar"} = {}) { 
 
    console.log(a + " " + b); 
 
})();

Diese nicht auf Funktionsparameter beschränkt, sondern funktioniert in jedem Destrukturierung Ausdruck.

+2

Nifty! Es scheint, als würde man die Standardeinstellungen auf der Destrukturierungsseite (so wie man es tut) immer vorziehen, wenn man auf der Standardparameterseite vorgeht (so wie ich). Würdest du damit einverstanden sein? Kannst du an etwas denken, auf das du aufpassen solltest? – user3019273

+2

Ich glaube nicht, dass man gegenüber dem anderen "bevorzugt" ist. Es macht einfach etwas anderes. – Bergi

+0

sehr gutes Beispiel – Leo