ES6对象解构默认参数


73

我正在尝试找出是否有一种方法可以使用默认参数的对象分解,而不必担心部分定义了对象。考虑以下:

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

{a: "qux"}例如,当我用调用时,我会qux undefined在控制台中看到真正想要的时间qux bar。有没有一种方法可以实现而无需手动检查对象的所有属性?

Answers:


147

是。您也可以在解构中使用“默认值”:

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

这不限于函数参数,而是适用于每个解构表达式。


3
好漂亮!似乎总是比在默认参数方面(像我以前)那样优先选择在解构方面(执行方式)设置默认值。你同意吗?你有什么需要注意的吗?
user301927314年

2
我不认为一个“优先”于另一个。它只是做其他事情。
Bergi 2014年

1
这样可以防范undefined,但还是错误,如果bnull正确的?任何方式,以防止双方undefinednull解构的时候?例如:{a: "qux", b: null}仍然会出错。
艾伦·哈姆利特

2
@AlanHamlett不,仅处理销毁undefined-null必须显式完成传递,因此会导致错误。要处理nullundefined,请使用b == null ? "bar" : b函数内部的标准。
Bergi

2
@YonggooNoh看这里这里
Bergi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.