JavaScript 运用闭包防备变量污染

javaScript在多人合作时,假如定义过量的全局变量 有能够构成全局变量定名争执,运用闭包来处理功用对变量的挪用 将变量写到一个自力的空间内里 就是闭包内里

 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互不影响

运用这类体式格局也有利于完成种种操纵 不污染全局变量就能够把特定的功用写到一个闭包内里去 然后留出一个接口轻易启用这个功用

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值互不影响

    原文作者:柏野
    原文地址: https://segmentfault.com/a/1190000013897910
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞