跳到主要内容
CNode

问个超级小白的问题。

问答
Bbeiyio发布于 9 年前最后回复 9 年前
544270

/** 测试1*/ function test(aNu){ setTimeout(function(){ console.log(aNu) },1000*10) }

for (var index = 0; index < 10; index++) { test(index); }

最后输出的 结果是0-9 在第一次setTimeout等待执行的时候,外面的index应该等于9了。里面应该输出9次9才对-。-可是为啥是0-9呢~

查看回复

回复 (5)

M
myy#59 年前

也可以认为每次调用 test() 时,在 setTimeout 周围生成了一个独立的闭包,这个独立的闭包保存了 "当时的aNu值"

S
Soontao#49 年前

你使用的是函数参数而不是闭包

C
coordcn#39 年前

传值

1
18820227745#29 年前

for循环执行了test(aNu),index就改变了。加入事件循环队列的是setTimeout,加入时拿到的值是0-9,

F
FlyerJay#19 年前

setTimeout访问到的aNu都是外层函数的aNu而不是for里面的index,当然不会是9啊

参与回复

登录后即可参与回复。登录