playSound(e)添加到addEventListener时,为什么不必传递参数?如何自动传递事件?

function playSound(e) {
  const audio = document.querySelector(`audio[data-key="${e.keyCode}"]`);
  const key = document.querySelector(`.key[data-key="${e.keyCode}"]`);
  if (!audio) return; //stop the function from running
  audio.currentTime = 0; // rewinds to the start
  audio.play();
  key.classList.add("playing");
}

window.addEventListener('keydown', playSound);


该代码按原样工作

最佳答案

这样考虑:

function addEventListener(event, handler) {
  const eventObject = new Event();

  switch(event) {
    case "keydown":
      handler(eventObject);

  }
}


显然,这是一个简化的版本,但是您传递的函数由addEventListener带参数调用

关于javascript - 不必在addEventListener中传递参数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50336888/

10-13 04:26