这个窗口如何调整功能?

时间:2012-10-04 18:12:43

标签: javascript

前一阵子我问了一个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);

该人说当时他/她没有时间解释关闭。我仍然不明白它是如何工作的。有人可以向我解释一下吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

返回的匿名函数形成了对“限制”的关闭。变量。因此,即使您的堆栈展开,并且函数throttle()超出了范围'。匿名函数仍然可以访问'限制'变量

闭包很棒......我每天都使用它们,它们对我来说仍然像魔术一样......(一旦你理解它们在堆上的实现方式,它就不那么神奇了但是我离题了:)