Javascript闭包(Closure)详解
变量的作用域无非就是两种:全局变量和局部变量。另一方面,在函数外部自然无法读取函数内的局部变量。出于种种原因,我们有时候需要得到函数内的局部变量。但是反过来就不行,f2内部的局部变量,对f1就是不可见的。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。这证明了,函数f1中的局部变量n一直保存在内存中,并没有在f1调用后被自动清除。解决方法是,在退出函数之前,将不使用的局部变量全部删除。2)闭包会在父函数外部,改变父函数内部变量的值。
用户评论