这里使用了立即执行函数,x是立即执行函数内部的变量,是一个单独的作用域,每一个立即执行函数返回的function中有于x的使用,则会保存该作用域。
解决方案 »
- 树状导航问题,老师请帮我看一下,急!
- 子窗口中用jQuery访问和控制父窗口中的tab
- jsp 程序错误
- 为什么我的ie6触发不了select的onchange?
- js input file标签赋值问题?
- falsh javasript 之间的调用 在线等
- js onchange问题
- 没分了,江湖救急!! 如何将 "abc#123\#456" split成数组[abc, 123\#456]
- 急!!!!!!!!!如何判断一个窗口是否处于当前所有窗口的最前面????
- 页面上有一个小图片a,一个大图片b,想让a以b左上角为坐标定位. 看看这段代码为什么a还是以页面坐标定位.
- 如何让页面更好的自适应
- 页面只能输入两个汉字?
一、f() 函数只是一个普通的函数,其作用域中有两个变量 a 和 i
二、在最外层函数( f() )中,循环定义了匿名函数(匿名函数A function (x) { }(i);) (该函数可是立即执行了哟,把i 传值给了x 罢了):注意,这时候 x 就和 i 的值绑定在了一起。
三、匿名函数A作用域内有一个变量(x :: 亲,形参也是作用域中的变量哟 ),又声明了匿名函数B , 只不过该匿名函数被返回了并保存到了a数组中了而已。
四、匿名函数B 被返回后,仍然可以访问到外部函数(匿名函数A作用域中的 x),(人家return x ; 了嘛),这就是闭包了。
五、所以 a[0] () ; // 为0 a[1] () ; // 为1 , 而不是 a[0] () ; // 为3 a[1] () ; // 为3 不知道说清楚了没有,有问题再讨论哈