javascript 闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对0),

而这些键值对是不会随上一级函数的执行完成而销毁。

    function a(){

    var i=0;

    function b(){

    alert(++i);

    }

    return b;

    }

    var c=a();

    c();

在执行完var c=a()后,变量c实际上是指向了函数b,b中用到了变量i,

再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包。

为什么?因为函数a外的变量c应用了函数b函数a内的,

就是说:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个我们通常所谓的闭包