我是一个新手,并且对以下代码非常困惑。
for (var i=1; i<=5; i++) {
console.log('ooo');
setTimeout( function timer(){
console.log( i );
}, i*1000 );
}
此代码的输出如下:
ooo
ooo
ooo
ooo
ooo
6
6
6
6
6
先谢谢我解释这段代码。
答案 0 :(得分:0)
for (var i=1; i<=5; i++) {
console.log('ooo');
setTimeout( function timer(){
console.log( i );
}, i*1000 );
}
在这段代码中调用setTimeout()时,for循环就完了,每个函数都会引用相同的i值,即6
function closure(i){
setTimeout( function timer(){
console.log( i );
}, i*1000 );
}
for (var i=1; i<=5; i++) {
console.log('ooo');
closure(i);
}
这会打印i = 1到5,因为函数只能看到i中相应的值
答案 1 :(得分:0)
正确的结果应如下所示 你应该按照以下指示思考 1个代码将控制台000&lt; = 5次 我的循环增加了你。当第一次执行定时器功能时,我已经增加,现在估值为127然后是6。
16:57:40.946 ooo
16:57:40.946 ooo
16:57:40.946 ooo
16:57:40.947 ooo
16:57:40.947 ooo
16:57:40.947 127
16:57:41.949 6
16:57:42.947 6
16:57:43.951 6
16:57:44.947 6
16:57:45.950 6