javascript中for循环和setTimeout同时使用,出现的问题

javascript中for循环和setTimeout同时使用,出现的问题

for循环代码




    
    Title





javascript中for循环和setTimeout同时使用,出现的问题_第1张图片

打印出来是 5 5 5 5 5 ,怎么回事?
因为 setTimeout 的 console.log(i); 的i是 var 定义的,所以是函数级的作用域,不属于 for 循环体,属于 global。等到 for 循环结束,i 已经等于 5 了,这个时候再执行 setTimeout 的五个回调函数(参考上面对事件机制的阐述),里面的 console.log(i); 的 i 去向上找作用域,只能找到 global下 的 i,即 5。所以输出都是 5。

解决办法:人为给 console.log(i);

你可能感兴趣的:(javascript中for循环和setTimeout同时使用,出现的问题)