JS闭包实例

关于闭包我也是初学者,所以对闭包的理解还不是很透彻,以下几个例子是我通过红宝书上的例子改变了一下,可能对大家学习闭包会有更透彻的帮助。

例1

//object2把闭包赋值给数组

//object2把闭包赋值给数组
            var object2 = {
                createFunctions : function (){
                    var result = new Array();
                    for(var i =0 ; i<10;i++){
                        result[i] = function(){
                            return i;
                        };
                    }
                    return result;
                }
            }

console.log(object2.createFunctions());

// 结果:
//Array (10)
// 0 function (){ return i; }
// 1 function (){ return i; }
// 2 function (){ return i; }
// 3 function (){ return i; }
// 4 function (){ return i; }
// 5 function (){ return i; }
// 6 function (){ return i; }
// 7 function (){ return i; }
// 8 function (){ return i; }
// 9 function (){ return i; }

console.log(object2.createFunctions()[1]());
//结果:
//10

例2

var object3 = {
    createFunctions : function (){
        var result = new Array();
        for(var i =0 ; i<10;i++){
            result[i] = function(num){
                return num;
            }(i);
        }
        return result;
    }
}
            
console.log(object3.createFunctions());
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

例3

//object4定义一个匿名函数,并在匿名函数内部创建并返回了一个闭包
            var object4 = {
                createFunctions : function (){
                    var result = new Array();
                    for(var i =0 ; i<10;i++){
                        result[i] = function(num){
                            return function(){
                                return num;
                            }
                        }(i);
                    }
                    return result;
                }
            }
            
            console.log(object4.createFunctions());
//          Array (10)
//          0 function (){ return num; }
//          1 function (){ return num; }
//          2 function (){ return num; }
//          3 function (){ return num; }
//          4 function (){ return num; }
//          5 function (){ return num; }
//          6 function (){ return num; }
//          7 function (){ return num; }
//          8 function (){ return num; }
//          9 function (){ return num; }
            console.log(object4.createFunctions()[2]());
//          结果:2

你可能感兴趣的:(JS闭包实例)