简单理解 js闭包

    闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
    1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
    2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
    闭包允许你引用存在于外部函数中的变量。然而,它并不是使用该变量创建时的值,相反,它使用外部函数中该变量最后的值,闭包函数返回时,该函数内部变量处于激活状态,函数所在栈区依然保留.

eg:
var result=[];
function foo(){
    var i= 0;
    for (;i<3;i=i+1){
        result[i]=function(){
            alert(i)
        }
    }
};
foo();
result[0](); // 3
result[1](); // 3
result[2](); // 3

匿名函数

var result=[];
function foo(){
    var i= 0;
    for (;i<3;i=i+1){
        result[i]=(function(j){
            return function(){
                alert(j);
            };
        })(i);
    }
};
foo();
result[0](); // 0
result[1](); // 1
result[2](); // 2

 

你可能感兴趣的:(JavaScript)