Javascript如何避免无限回调调用?

Yan*_*eng 10 javascript

我有以下代码.

HTML

<p id="test">hello</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

document.getElementById("test").addEventListener("click", function() {
  console.log("called");
  document.getElementById("test").click();
});

document.getElementById("test").click();
Run Code Online (Sandbox Code Playgroud)

当我运行它时,控制台只打印一次"被叫".我的问题是javascript使用什么机制来避免无限调用回调?

Adr*_*and -1

我想这可能是一个反跳事件,当第一个事件仍在运行时,它不会调度另一个单击事件,或者在特定时间段内停止双击触发事件处理程序两次。

document.getElementById("test").addEventListener("click", function() {
  console.log("called");
  document.getElementById("test").dispatchEvent(new MouseEvent('click', {
    view: window,
    bubbles: true,
    cancelable: true
  }));
});

document.getElementById("test").click();
Run Code Online (Sandbox Code Playgroud)
<p id="test">hello</p>
Run Code Online (Sandbox Code Playgroud)