0

不久前,我要求一个 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);

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

谢谢你。

4

1 回答 1

0

返回的匿名函数在“节流”变量上形成一个闭包。因此,即使您的堆栈展开,并且函数 throttle() 会“超出范围”。匿名函数仍然可以访问“节流”变量。

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

于 2012-10-04T18:17:16.060 回答