zoukankan      html  css  js  c++  java
  • 团队合作,如何避免js冲突

    有时候会出现多位工程师在同一页面写js的情况,很有可能工程师A定义了变量a,然后工程师B又定义了这个变量,如下:
    <script>
         var a="abc";
         do something.....
     
         var a="def";
         do something......
    </script>
    它们都是直接定义在window作用域下的,所以就会发生冲突隐患。
    如何避免这种冲突隐患呢?
    最简单最有效的方法就是用匿名函数将脚本包起来,如下:
     
    <script>
    (function($){
         var a="abc";
         do something.....
     })(jQuery);
     
    (function($){
         var a="def";
         do something.....
     })(jQuery);
    </script>
    如此一来它们的作用域就不在式window了,而是在它们各自的函数里,不再冲突了。
     
    那么如果工程师B想调用工程师A中的变量,按如上方法是无法进行通信的,那该怎么办呢?
    为了解决匿名行数之间的通信,我们可以定义一个全局变量,如下;
    <script>
              var global={};
    (function($){
        var a="abc";
        var b="def";
        global=a;
         do something.....
     })(jQuery);
     
    (function($){
         var c=globa;//这里的global的值就是'abc'.
         do something.....
     })(jQuery);
    </script>
    使用普通变量作为全局变量,扩展性十分差,,所以我们使用一个{}对象类型的变量作为全局变量,如此一来就解决了各个匿名函数之间的通信问题。
     
    如果工程师B还想调用工程师A中函数的变量b呢?
    那么就可以在A中写扩展,如下:
    <script>
              var global={};
    (function($){
        var a="abc";
        var b="def";
        global.str1=a;
        global.str2=b;
         do something.....
    })(jQuery);
     
    (function($){
         var c=globa.str1;//这里的global的值就是'abc'.
         var d=global.str2;
         do something.....
    })(jQuery);
    </script>
  • 相关阅读:
    ES6的Generator函数
    2017年要学习的三个CSS新特性
    移动端H5页面遇到的问题总结
    移动端布局解决方案+神器
    利用HTML5的devicemotion事件实现手机摇一摇抽奖,年会抽奖
    JavaScript 中 for 循环
    HTML DOM对象的属性和方法介绍(原生JS方法)
    初识JSON
    让你的WizFi250适应各种气候
    JAVA复习2 JAVA开发环境配置
  • 原文地址:https://www.cnblogs.com/Qzhou/p/3130918.html
Copyright © 2011-2022 走看看