描述如题代码如下function test() { for(var i=0; i<10; i++) {
setTimeout(function(){
(function (m) { console.log(m);
})(i)
}, 500)
}
}
test();执行结果请教下解决办法, 并指出错误位置, 谢谢!
1 回答

慕森王
TA贡献1777条经验 获得超3个赞
直接在setTimeout()
里用即时执行封装下回调就行了,你封包在setTimeout()
的里边跟没封区别不大:
function test() { for(var i=1; i<11; i++) { setTimeout((function(){ console.log(i); })(), 500) } } test();
补充:
如果想做成间隔500ms一次console.log,那我觉得不如直接写成:
var i = 1;var ii = setInterval(function(){ if (i<11) { console.log(i); i++; } else { clearInterval(ii); } }, 500);
添加回答
举报
0/150
提交
取消