答案 0 :(得分:2)
您在调用堆栈的末尾调度了10个console.log
语句(在for循环完成后函数返回时)。由于此时i
为10
,因此打印10
的次数与您使用该处理程序调用{{1}}的次数相同。
修改强>
在澄清问题后,您所看到的是value of the last expression evaluated。在这种情况下,它是您设置的最后一次超时的值。 setTimeout
返回一个可取消且对于标签会话唯一的ID。在这种情况下,似乎浏览器正在递增他们已经存储的计数,所以你得到的增量为10,因为你在循环中调用了window.setTimeout
10次。
答案 1 :(得分:0)
您的setTimeout()
调用会创建所有引用完全相同变量的函数,i
循环中定义for
。循环结束后,i
的值将为10
,以便在计时器处理程序触发时记录了什么。