未传递所有函数参数的控制台错误

问题描述 投票:0回答:5

这里有一个简单的函数,我要向其中传递3个参数,有时是2个。当我传递2个参数时,控制台会抛出错误:

未捕获的TypeError:无法读取未定义的属性'classList'

我知道当我没有指定要传递给第三个参数的内容时会传递undefined,但是由于在JS中使用参数是可选的,为什么会在控制台中引发错误?我想清除错误,以便最终用户在打开控制台时看不到它。

  toggleDisplay = (class1, class2, class3) => {
    class1.addEventListener('click', () => {
      class2.classList.toggle('displayToggle')
      class3.classList.toggle('displayToggle')
    })
  }
javascript
5个回答
1
投票
使用所有参数。您有class3.classList.toggle;如果仅传递两个参数,则class3是未定义的,因此尝试访问其classList失败。如果希望class3是可选的,则需要在尝试实际使用它之前检查它是否未定义。

1
投票

1
投票

1
投票

1
投票

进行检查。使用&&运算符,您可以检查给定的参数是否具有值,然后继续进行操作。 class2 && class2.classList.toggle()。另外,如果您要给它回退方法,则可以将其用于三元运算符?class2 ? class2.classList.toggle() : otherMethod()

© www.soinside.com 2019 - 2024. All rights reserved.