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

返される無名関数は、「throttling」変数のクロージャを形成します。したがって、スタックが展開され、関数 throttle() が「範囲外」になった場合でも。匿名関数は、「throttling」変数に引き続きアクセスできます。

クロージャは素晴らしい..私は毎日それらを使用していますが、それでも私にとっては魔法のようです..(ヒープでの実装方法を理解すれば、それほど魔法ではありませんが、余談になります:)

于 2012-10-04T18:17:16.060 に答える