3
|
Jonathon Oates · 技术社区 · 15 年前 |
![]() |
1
5
您需要在循环中附加事件处理程序以捕获
需要闭包的原因是,如果没有闭包,则
还有一点,虽然有点离题,但它可能会帮助您,那就是并非每个浏览器都支持事件捕获(
啊哼
,即)但事件冒泡是。这有效地使
还有一点,JavaScript通常对函数名和变量名使用camel大小写。Pascal大小写通常只用于构造函数(创建对象的函数)。 |
![]() |
2
3
当您创建一个引用外部变量的函数时,这些引用将在您调用此函数时解析。
您要做的是在循环的每一步捕获“i”的值,以便以后进行评估,例如:
您可以看到有一个内部函数,它获取当前计数器的副本作为参数。这个内部函数在该副本中保持活动状态,因此稍后对存储的innest函数的调用将返回创建它的函数的my\u i的值(清除?:-) 这就是闭包的奇妙世界。首先得到它可能需要一点心血,但之后你会很高兴你做到了,所以去谷歌“javascript闭包”去死吧! |
![]() |
3
2
这可能是Russ Cam答案的一个更明显的变体:
|