$('div').click(function () {
var timer = -1;
return function () {
if (timer > 0) {
console.log(false);
return false;
} else {
timer = setTimeout(function () {
timer = -1;
}, 5000);
console.log(true);
return true;
}
};
}());
实际上可以这样来理解,为div绑定click事件的时候 执行了外层function,这个函数的返回值是内层函数,因此,将内层函数绑定到了click事件上。同时,内层函数引用了外层函数的变量,该变量不会被回收。
注:在同一个作用域链中定义的所有闭包共享同一个变量或私有变量,如:
function constfuncs(){ var funcs = []; for(var i=0;i<10;i++) { funcs[i] = function(){return i;}; } return funcs; } var funcs = constfuncs(); console.log(funcs[5]());//10,全部都返回10
funcs[0],funcs[1],...,funcs[9]共享变量i