【发布时间】:2017-01-31 12:02:31
【问题描述】:
我试图理解这段代码中发生了什么,如果我弄错了,请纠正我
function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
$(document).on("keyup", "#SearchTerm", debounce(function (e) {
e.preventDefault();
var form = $(e.target).closest('form');
$(form).submit();
}, 300))
首先从 debounce 返回的函数,this 立即执行,并且 this 引用/上下文将是“#SearchTerm”输入元素,因为 jQuery 在其 keyup 事件上附加了函数调用?
其次,在这种情况下,参数对象是否由 jQuery 'keyup' 事件自动填充?
谢谢!
【问题讨论】:
-
如果你在浏览器控制台中一步步调试代码会更好,因为它会清除你所有的疑虑。
-
我一直在这样做,我只是想检查一下我的解释是否正确。
标签: javascript jquery this apply