JavaScript 使用闭包防止变量污染

javaScript在多人协做时,若是定义过多的全局变量 有可能形成全局变量命名冲突,使用闭包来解决功能对变量的调用 将变量写到一个独立的空间里面 就是闭包里面java

1       var name = "外部name";
 2         var init = (function(){
 3             var name = "内部name";
 4             function callName(){
 5                 console.log(name);
 6                 //打印name
 7             }
 8             return function(){
 9                 callName();
10                 //造成接口
11             }
12         }());
13         init();

将最后一个函数return以后返回给init函数造成一个执行callName()函数的接口 开启callName()这个功能 这样作造成了一个闭包 闭包的变量私有化不会污染全局变量 闭包

执行init() 打印的name与外部的name互不影响函数

使用这种方式也有利于实现各类操做 不污染全局变量就能够把特定的功能写到一个闭包里面去 而后留出一个接口方便启用这个功能code

var name = "GlobalName";
                //全局变量

        var init = (function(){
            var name = "initName";

            function callName(){
                console.log(name);
                //打印name
            }

            return function(){
                callName();
                //造成接口
            }
        }());

        init();    // --> initName


        var initSuper = (function(){
            var name = "initSuperName";

            function callName(){
                console.log(name);
                //打印name
            }

            return function(){
                callName();
                //造成接口
            }
        }());

        initSuper(); // --> initSuperName

在执行init( )和initSuper( )时打印的name值互不影响接口

相关文章
相关标签/搜索