Есть ли способ предоставить два набора параметров покоя в одном определении функции? - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь использовать функцию, которая принимает неопределенное количество элементов и классов. Количество элементов всегда будет соответствовать количеству классов. Я знаю, что могу использовать параметры отдыха, чтобы принять неизвестное количество аргументов, но возможно ли это сделать для двух наборов?

Вот о чем я думаю ⬇️:

const toggleClass = (axn, ...elements, ...classname) => {
    elements[0].classList[axn](classname[0])
    elements[1].classList[axn](classname[1])
}

heroBtn.addEventListener('mouseenter', () => toggleClass('add', arrowEl, btnTextEl, 'arrow-hover', 'btn-text-hover'))
heroBtn.addEventListener('mouseleave', () => toggleClass('remove', arrowEl, btnTextEl, 'arrow-hover', 'btn-text-hover'))

1 Ответ

1 голос
/ 22 марта 2020

Нет - если бы это было возможно, интерпретатору было бы непонятно, какой аргумент входит в какой параметр rest. Например, с

fn = (...args1, ...args1) => {

и

fn('foo', 'bar', 'baz')

Как интерпретатор может решить, какие элементы поместить в какой массив?

Вам придется самостоятельно выделять элементы .

Для того, что вы делаете, я бы предпочел передать массивы:

toggleClass(
  'add',
  [arrowEl, btnTextE1],
  ['arrow-hover', 'btn-text-hover']
);

Затем итерировать по ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...