2014-10-26 19 views
39

Próbuję dowiedzieć się, czy istnieje sposób, aby użyć destrukturyzacji obiektu domyślnych parametrów bez obawy o częściowo zdefiniowany obiekt. Rozważmy następujący:ES6 Object Destructuring Default Parameters

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

Kiedy ja nazywam to z {a: "qux"}, na przykład, widzę qux undefined w konsoli kiedy to, co naprawdę chcę to qux bar. Czy istnieje sposób, aby to osiągnąć bez ręcznego sprawdzania wszystkich właściwości obiektu?

Odpowiedz

79

Tak. Można użyć „domyślne” w demontażu struktury, a także:

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

ta nie jest ograniczona do parametrów funkcji, ale działa w każdej wypowiedzi rozpad.

+2

Nifty! Wygląda na to, że ustawienie wartości domyślnych po stronie destructuring (tak jak to robisz) będzie zawsze preferowane, gdy robisz to po stronie domyślnego parametru (jak byłem). Zgodziłbyś się z tym? Czy możesz wymyślić coś, na co trzeba uważać? – user3019273

+2

Nie sądzę, że jeden jest "preferowany" w stosunku do drugiego. Po prostu robi coś innego. – Bergi

+0

bardzo dobry przykład – Leo

Powiązane problemy