有没有一种方法可以在一个函数定义中提供两组rest参数?

时间:2020-03-22 07:13:18

标签: javascript function parameters arguments parameter-passing

我正在尝试使用一个函数,该函数接受不确定数量的元素和类。元素的数量将始终与类的数量匹配。我知道我可以使用rest参数来接受未知数量的参数,但是是否有可能针对两个参数集执行此操作?

这就是我在想的⬇️:

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 个答案:

答案 0 :(得分:1)

否-如果可能的话,解释器将不清楚哪个参数进入哪个rest参数。例如,

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

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

解释器如何决定将哪些元素放入哪个数组?

您必须自己分离出元素。

对于您正在做的事情,我更喜欢传递数组:

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

然后遍历它们。