javascript 闭包理解

  1. 闭包的含义:闭包就是能够读取其他函数内部变量的函数,一个函数内部的函数
  2. 闭包的用途: 读取函数内部的变量;让这些变量的值始终保持在内存中
  3. 闭包的弊端:由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大, 所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。
  4. 使用闭包的注意点:闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method), 把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。
  5. 使用闭包的例子

function t() {
var age = 23;
return function () {
console.log(age++);
}
}
var tmp = t();
var age = 1000;
tmp();
上述代码,闭包函数是function () {console.log(age++);},这个闭包函数引用var age = 23中的age。t()得到的结果是function() { console.log(age++);},该结果被赋予给一个全局变量tmp ,这个全局变量(即tmp)也引用t函数的局部变量age(var age = 23;),当调用tmp函数结束后,函数内部的变量age( var age = 23;)的值始终保持在内存中。注意:防止内存泄露问题,我们需要在退出函数之前,将不使用的局部变量全部删除。

猜你喜欢

转载自blog.csdn.net/zst_422/article/details/82983939