zoukankan      html  css  js  c++  java
  • 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互不影响

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

    <script>    
            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
        </script>
    
    在执行init( )和initSuper( )时打印的name值互不影响
  • 相关阅读:
    Python进阶08 生成器
    Python进阶07 迭代
    Python进阶06 列表推导
    Python进阶05 函数property
    Python基础14 集合
    支付宝支付和微信消息推送
    Redis
    django之contenttype
    数据分析系列
    IPython
  • 原文地址:https://www.cnblogs.com/treasurecat/p/8522822.html
Copyright © 2011-2022 走看看