一个面试题
来源:16-11 作用域和闭包--解题-代码演示
V金龙V
2017-12-08
/*
为什么输出5个5?,setTimeout里面不是有一个函数吗?,所以函数里面的
i的作用域和for循环的i的作用域是不一样的,一个函数作用域,一个是全局作用域,
所以函数里面的i为啥不是依次递增呢?
*/
for(var i=0; i<5; ++i){
setTimeout(function () {
console.log(i);
},500);
}
写回答
2回答
-
慕码人738631
2018-09-17
setTimeout()异步处理,i自由变量在其上一层执行后为5,此时i=5
00 -
双越
2017-12-08
“一个是函数作用域”—— 理解不对,i 得在函数中定义,才算是函数作用域的,否则算是自由变量。
062017-12-09
相似问题