【问题标题】:ES6 Object Destructuring Default ParametersES6 对象解构默认参数
【发布时间】:2014-10-26 21:27:17
【问题描述】:

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

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

例如,当我用{a: "qux"} 调用它时,我在控制台中看到qux undefined,而我真正想要的是qux bar。有没有办法在不手动检查所有对象的属性的情况下实现这一点?

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

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

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

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

    【讨论】:

    • 漂亮!似乎在解构方面(你正在做的方式)设置默认值总是优于在默认参数方面(就像我一样)。你同意吗?你能想到什么要注意的吗?
    • 我不认为一个比另一个“更受欢迎”。它只是做其他事情。
    • @AlanHamlett 不,解构只处理undefined - 传递null 必须显式完成,因此会导致错误。要同时处理nullundefined,请在函数内部使用标准b == null ? "bar" : b
    • @Bergi 你能解释一下你的答案和test({a="foo", b="bar"}) 有什么区别吗?
    • @YonggooNoh 见herehere
    猜你喜欢
    • 2016-10-30
    • 2017-04-01
    • 2019-07-23
    • 1970-01-01
    • 2016-12-21
    • 2017-08-23
    • 2017-06-14
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多