@hotjp
2017-03-13T14:21:23.000000Z
字数 511
阅读 1250
面试题
过完年,开年看的最多的就是新年前端面试吐槽,看到一个很有趣的题目,涉及到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);
}