【发布时间】:2016-08-01 13:21:33
【问题描述】:
如果我像这样调用函数once
var button = document.querySelector('button');
button.addEventListener('click', once);
function once() {
console.log('one');
button.removeEventListener('click', once);
}
它只调用一次。
但是如果我这样打电话once()
var button = document.querySelector('button');
button.addEventListener('click', once());
function once() {
console.log('one');
button.removeEventListener('click', once());
}
异常抛出
异常:内部错误:递归过多
请您解释一下为什么会这样。
【问题讨论】:
-
你会立即调用一个带有
()的函数 -
如果在函数名后使用
(),则执行该函数。而且你不想在传递给addEventListener或removeEventListener之类的方法时被执行,所以只需将其删除。 -
哈哈,我喜欢它抛出的异常——“递归过多”
-
我想说“堆栈溢出”太陈词滥调了? :)
标签: javascript recursion