不久前,我请求一个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);该人士表示,当时她/他真的没有时间解释闭包。我还是不明白它是怎么工作的。有人能给我解释一下吗?
谢谢。
发布于 2012-10-05 02:17:16
被返回的匿名函数在“throttling”变量上形成一个闭包。因此,即使当堆栈展开时,函数throttle()也“超出了范围”。匿名函数仍有权访问“throttling”变量。
闭包太棒了..我每天都在用它们,它们对我来说就像魔法一样..(一旦你理解了它们是如何在堆上实现的,它就不那么神奇了,但我离题了:)
https://stackoverflow.com/questions/12733249
复制相似问题