@hotjp
2017-03-13T06:21:23.000000Z
字数 511
阅读 1404
面试题
过完年,开年看的最多的就是新年前端面试吐槽,看到一个很有趣的题目,涉及到setTimeout和闭包的内容,拿出来和大家一起做一下
以下代码在执行后会输出什么
for (var i = 0; i < 5; i++) {console.log(i);}
如果需要延迟执行,增加setTimeout,会发生什么
for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000 * i);}
假如套上一个立即执行函数
for (var i = 0; i < 5; i++) {(function(i) {setTimeout(function() {console.log(i);}, i * 1000);})(i);}
上例去掉小括号的i
setTimeout的位置调整一下
for (var i = 0; i < 5; i++) {(function() {setTimeout(function() {console.log(i);}, i * 1000);})(i);}
回到第一题
setTimeout(function(){console.log(0);},0);for (var i = 0; i < 5; i++) {console.log(i);}