function debounce(f, ms) {
var state = null;
var COOLDOWN = 1;
return function() {
if (state) return; //Интересует этот момент
f.apply(this, arguments);
state = COOLDOWN;
setTimeout(function() { state = null }, ms);
}
}
function f(x) { alert(x) }
var f = debounce(f, 1000);
f(1);
f(2);
setTimeout( function() { f(3) }, 100);
setTimeout( function() { f(4) }, 1100);
setTimeout( function() { f(5) }, 1500);
Почему анонимная функция возвращается, если state всегда равен null? Если не всегда, то как он изменился и как браузер прошёл дальше return? Почему f(2), f(3) и f(5) не выполняются? Разве не должна функция f(1) выполнится и за ней f(2), f(3) и так далее?