在下面的 Node.js 程序中,循环执行了很多次,但为什么控制没有从循环中出来。我没有忘记在for中执行i++,我在setTimeout中增加了i的值。
function abc () {
for(var i=0;i<5;) {
console.log("executes loop");
setTimeout(function(){
console.log(i++);
},0)
}
}
abc();
最佳答案
您忘记将 i++
放入循环中。
试试这个
<html>
<body>
<script>
window.onload = function function_name(argument) {
// body...
function abc () {
for(var i=0;i<5;i++) {
console.log("executes loop");
setTimeout(function(){
console.log(i++);
},0)
}
}
abc();
}
</script>
</body>
</html>
由于超时,它会跳出循环,因此当它返回时,i
的值将为 5,因此它将在 5 之后打印。
已编辑
如果你想在超时
内增加值
试试这个
<html>
<body>
<script>
window.onload = function function_name(argument) {
// body...
var j = 0;
function abc () {
for(var i=0;i<5;i++) {
console.log("executes loop");
setTimeout(function(){
i++;
j = i-6;
console.log(j);
},0)
}
}
abc();
}
</script>
</body>
</html>
关于javascript - Node.js 中的 setTimeout 中计数器没有增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43133269/