ES6 对象解构默认参数

IT技术 javascript ecmascript-6
2021-02-09 10:29:51

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

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

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

1个回答

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

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

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

@YonggooNoh 看这里这里
2021-03-12 10:29:51
@AlanHamlett 不,解构只处理undefined-null必须明确地传递,因此会导致错误。要同时处理nullundefined,请使用b == null ? "bar" : b函数内部的标准
2021-03-20 10:29:51
这样可以防范undefined,但是如果b对的,还是会出错null任何方式,以防止双方undefinednull解构的时候?例如:{a: "qux", b: null}仍然会出错。
2021-04-06 10:29:51
我不认为一个比另一个更“受欢迎”。它只是做别的事情。
2021-04-09 10:29:51
漂亮!似乎在解构端设置默认值(你这样做的方式)总是比在默认参数端设置默认值(就像我一样)。你同意吗?你能想到什么要注意的吗?
2021-04-11 10:29:51