JS-闭包

        function createFunctions(){
            var result = new Array();
            for (var i=0; i < 10; i++){
                console.log(i + ' --- 初始化循环');
                result[i] = function(){
                    console.log(i +' --- 匿名函数返回');
                    return i;
                };
            }
            // 匿名函数中还引用了 i ,return后,并不会销毁
            return result;
        }
        // 初始化的时候,在createFunctions 中,
        // i还是被引用着,并不会随着函数返回而销毁
        var funcs = createFunctions();
        console.log(funcs);
        //every function outputs 10
        for (var i=0; i < funcs.length; i++){
            console.log(funcs[i]() + '--外层循环');
        }
        function createFunctions(){
            var result = new Array();
            for (var i=0; i < 10; i++){
                result[i] = function(num){
                    // 此处会一直引用 num ,不会销毁 num
                    return function(){
                        return num;
                    };
                }(i); // 每次循环都把 i 的值传递给 num
            }
            return result;
        }
        var funcs = createFunctions();
        //every function outputs 10
        for (var i=0; i < funcs.length; i++){
            console.log(funcs[i]() + " ---外层循环");
        }