更具体的代码:http://www.cnblogs.com/3body/p/5416830.html
// 由于setTimeout()的延迟执行特性,所以在执行的函数中直接使用外部函数的变量是无法获取到的,因为当执行的时候变量已经销毁了。所以,这里就使用了一个闭包的方法来达到能调用外部函数的目的。// 通常的setTimeout(function(){...},100)是这样写的,也就是第一个参数是个函数,里面是要执行的代码片段。// 这里就使用了闭包的方法return function(){...},第一个参数则接收到了一个函数,并往闭包中传入参数,这样就能先将变量赋给闭包的形参,里面的函数调用的就是闭包的形参,外部函数的销毁便不会影响到函数的执行了addUl=setTimeout(function(a,id,width){ return function(){ $.post( '<{:U("Index/type")}>', {'id':id}, function(data){ if (data) { var ul='
- '; var id; var href; $.each(data,function(n,v){ id=v['type_id']; // 不能使用array()传参,并且还要加上Home href='<{:U("Home/Pro/more/type/'+id+'")}>'; ul+='