闭包

97 阅读1分钟
全局变量:函数外创建的变量
局部变量:函数内部创建的变量

闭包:有权去访问另一个函数作用域中的变量的函数
原理:
    function test() {
            var x = 10;
            return function () {//闭包函数(匿名函数)
                return x;
            }
        }
        //调用局部变量x,报错未定义
        alert(x);
        //调用
        var a = test();
        alert(a());
        
实例:
    function text(arg){
            var y=function(){
                return arg;
            }
            arg++;
            return y;
        }
        //调用
        var a=text(123);
        alert(a())
        
原理2var y;
        function text(){
            var x=10;
            y=function(){
                return x;
            } 
        }
        //调用函数
        text();
        //调用
        alert(y());
        
 <!-- 迭代器实例 -->
    <script>
        function setup(x) {
            var i=0;
            return function(){
                return x[i++];
            };
        }
        //调用
        var next=setup(["a","b","c"])
        alert(next());
        alert(next());
        alert(next());
    </script>
    
    
实例:
    <script>
        function text() {
            var x = [];
            var i;
            for (i = 0; i < 3; i++) {
                x[i] = (function (a) {
                    return function () {
                        return a;
                    }

                })
                    (i);
            }
            return x;
        }
        //调用
        var a = text();
        alert(a[0]());
        alert(a[1]());
        alert(a[2]());
    </script>

    <!-- 迭代器实例 -->
    <script>
        function setup(x) {
            var i=0;
            return function(){
                return x[i++];
            };
        }
        //调用
        var next=setup(["a","b","c"])
        alert(next());
        alert(next());
        alert(next());
    </script>