2014-10-26 75 views
39

我想弄清楚是否有一种方法可以使用对象解构的默认参数,而不必担心被部分定义的对象。考虑以下几点:ES6对象解构默认参数

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

当我把这种与{a: "qux"},比如,我看到qux undefined在控制台当我真正想要的是qux bar。有没有办法实现这一点,而无需手动检查所有对象的属性?

回答

79

是的。您可以在解构,以及使用“默认值”:

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

这并不局限于函数的参数,但在每一个解构式的作品。

+2

漂亮!看起来像设置解构方面的默认值(你这样做的方式)总是首选在默认参数端进行(像我一样)。你会同意吗?你能想到任何需要注意的事情吗? – user3019273 2014-10-26 21:59:40

+2

我不认为一方比另一方“偏好”。它只是做别的。 – Bergi 2014-10-26 22:01:07

+0

很好的例子 – Leo 2014-12-07 17:09:52