很多人说js 闭包是必须要学的,类似于c++,java的封装型。比如为多个元素注册点击事件那些。那些代码是大致意思是能看懂。但是按照自己的想法改动了一些代码,那些事件就不成功了,可能就是没有对闭包理解到。那就先学一个focus事件的闭包案例吧,先大致了解一些用法,以及对闭包的初认识。以后有其他闭包知... ......
转发自http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
一、变量的作用域
要是有学过c语言的话,应该明白了全局变量和局部变量的用法。
那么理解第二步就是关键一步了。他就是利用了:“在函数内部可以直接读取全局变量”。
再加上js语法特殊一点,可以在函数中定义函数。那么类比外部函数的作用域==全局,内部函数的变量==局部变量。看下面的例子。
二、如何从外部读取局部变量?
理解了上面的话,有助于你理解闭包是如何定义的。到时可以自己定义闭包。
出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。
三、闭包的概念
上一节代码中的f2函数,就是闭包。
四、思考题
五.用到闭包的场景举例:解决用for循环为input元素注册点击事件的问题。
(完)