Параметры ES6 по умолчанию с деструктурированным объектом в качестве второго параметра, ссылающегося на первый параметр

Я пишу метод, который принимает два параметра: первый объект jQuery, который содержит форму, второй объект "options" с параметрами по умолчанию, некоторые из которых ссылаются на форму в первом параметре.

Я знаю, что параметр по умолчанию может ссылаться на значение параметра по умолчанию, который предшествует ему, поэтому мне интересно, почему мой код дает сбой.

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

Может кто-нибудь объяснить, что с этим не так?

1 ответ

Решение

Я понял, что я делаю не так. Я использовал двоеточия для предоставления значений по умолчанию для деструктурированного объекта вместо переменной присваивания.

Вот пример правильного способа передачи значений по умолчанию для деструктурированного объекта в параметрах функции:

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

При желании я могу назначить пустой объект (= {}) как значение по умолчанию для второго аргумента, чтобы избежать ошибок, если второй параметр не передан.

Другие вопросы по тегам