嵌套对象中的 ES6 默认参数

Tot*_*AMD 7 javascript ecmascript-6

我希望在嵌套对象中有一个带有默认参数的函数,并且我希望能够调用它f()或仅指定单个参数。

// A function with nested objects with default parameters:

function f({ a = 1, callback = ({ name, param } = { name: "qwe", param: 123 }) } = {}) {
    console.log("a:", a);
    console.log("callback:", callback);
}

// And I want to run it like this:

f();
f({ callback: { params: "456" } });

// But 'callback.name' becomes undefined.
Run Code Online (Sandbox Code Playgroud)

Bad*_*bra 7

当解构与默认参数混合时,我承认代码很难读写(尤其是当有嵌套对象时......)。

但我认为你正在尝试这样做:

function f({callback: {name = "cbFunction", params = "123"} = {}} = {}) {
  console.log(name);
  console.log(params);
}

f();
f({callback: {params: '789'}});
Run Code Online (Sandbox Code Playgroud)

  • 如果我尝试使用`callback`,它是`Uncaught ReferenceError: callback is not defined`。这很重要,因为我想使用多个具有相同字段名称的嵌套对象。 (2认同)