具有解构对象的 ES6 默认参数作为引用第一个参数的第二个参数

ES6 default parameters with destructured object as second parameter referencing first parameter

我正在编写一个带有两个参数的方法:第一个包含表单的 jQuery 对象,第二个带有默认参数的 "options" 对象,其中一些引用表单中的表单第一个参数.

我知道默认参数可以引用它前面的默认参数的值,所以我想知道为什么我的代码会失败。

const validation = {
  validateForm(form, {
    btn: form.find('button'),
    action: null,
    displayErrInline: form.attr('validate') === 'inline',
    disableValidation: false
  }) {
    // do stuff
  }
};

有人可以解释一下这有什么问题吗?

我发现我做错了什么。我使用冒号为解构对象而不是赋值变量提供默认值。

以下是将默认值传递给函数参数中的解构对象的正确方法示例:

const validation = {
  validateForm(form, {
    btn = form.find('button'),
    action = null,
    displayErrInline = form.attr('validate') === 'inline',
    disableValidation = false
  }) {
    // do stuff
  }
};

可选地,我可以指定一个空对象 (= {}) 作为第二个参数的默认值,以避免在没有传递第二个参数时出错。