未捕获的范围错误:超过了最大调用堆栈大小,JavaScript

Uncaught RangeError: Maximum call stack size exceeded, JavaScript

本文关键字:调用 堆栈 JavaScript 过了 范围 错误      更新时间:2023-09-26

有问题

    open: function($type) {
          //Some code
          document.getElementById($type).addEventListener("click", l.close($type), false);
    },
    close: function($type) {
           //There is some code too
           document.getElementById($type).removeEventListener("click", l.close($type), false);
           //^ Recursion & Uncaught RangeError: Maximum call stack size exceeded
    }

我做错了什么?如果没有这个点击事件监听器,一切都会正常工作。第三个参数在做什么(true|false)?非常感谢。

当您试图将is作为参数传递时,您正在调用addEventListenerremoveEventListener中的close函数(导致无限循环)。相反,您应该简单地将引用传递给函数,如下所示:

document.getElementById($type).addEventListener("click", l.close, false);

和:

document.getElementById($type).removeEventListener("click", l.close, false);

或者您可能有两个同名的Javascript函数。