首页 > 解决方案 > 有没有办法在一个函数定义中提供两组剩余参数?

问题描述

我正在尝试使用一个接收不确定数量的元素和类的函数。元素的数量将始终与类的数量相匹配。我知道我可以使用剩余参数来接受未知数量的参数,但是甚至可以为两组做到这一点吗?

这就是我的想法⬇️:

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'))

标签: javascriptfunctionparametersargumentsparameter-passing

解决方案


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

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

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

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

您必须自己分离元素。

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

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

然后迭代它们。


推荐阅读