基础就不说了 。直接给链接吧·······
闭包: http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
直接上综合题了:
for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, 1000); }console.log(i);
在这个js的基础上修改 吧变量i的输出顺序变为 5 0 1 2 3 4
for(var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); //5 5 5 5 5 }, 1000); }
/********************************************华丽的分割线************************************************/
解答1:
var f2 = f1(); for (var i = 0; i < 5; i++) { f2(); (function (a) { setTimeout(function() { console.log(a); // 0 1 2 3 4 }, 1000); }(i)) } function f1() { var num=1; return function () { num++; if(num == 5) console.log(num); //5 } }
解答2:
for (var i = 0; i <= 5; i++) { var num = Math.ceil(Math.abs(i-5)/5) * 1000; (function (a) { setTimeout(function() { console.log(a); // 5 0 1 2 3 4 }, num); }(i)) }