前一阵子我问了一个javascript函数,它允许我以设定的间隔调整浏览器窗口中的内容。比如,不是每个像素大小的变化。我得到了这个功能:
function throttle (func, wait) {
var throttling = false;
return function(){
if ( !throttling ){
func.apply(this, arguments);
throttling = true;
setTimeout(function(){
throttling = false;
}, wait);
}
};
}
window.onresize = throttle(function() {
resize_columns();
}, 20);
该人说当时他/她没有时间解释关闭。我仍然不明白它是如何工作的。有人可以向我解释一下吗?
谢谢。
答案 0 :(得分:0)
返回的匿名函数形成了对“限制”的关闭。变量。因此,即使您的堆栈展开,并且函数throttle()超出了范围'。匿名函数仍然可以访问'限制'变量
闭包很棒......我每天都使用它们,它们对我来说仍然像魔术一样......(一旦你理解它们在堆上的实现方式,它就不那么神奇了但是我离题了:)