首页 > 代码库 > 闭包举例

闭包举例

    js的变量以作用域划分为两种:全局变量、局部变量。在函数外声明的变量为全局变量,函数内部可以直接调用全局变量。在函数内部声明变量一定要用var 命令,否则就是在函数内部声明了一个全局变量了。

    闭包的产生是为了从外部读取函数的局部变量,即在函数内部再定义一个函数f2,把f2作为返回值,在上层函数中返回就可以使上层函数读取其他函数的局部变量了

function f1(){

    n=999;

    function f2(){
      alert(n);
    }

    return f2;

  }

  var result=f1();

  result(); // 999

闭包(closure)就是能够读取其他函数内部变量的函数。也可以说是定义在一个函数内部的函数,本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包的用途:1. 可以读取函数内部的变量

                        2. 让这些变量的值始终保持在内存中,因为f2依赖于f1的存在而存在。

缺点:函数中的变量都被保存在内存中,使内存消耗很大,所以不能滥用闭包,不然网页性能会降低,在IE中也可能会内存泄露,所以在退出函数之前,将不再使用的局部变量全部删除。

闭包举例