`
ry.china
  • 浏览: 140951 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

如何让js不产生冲突,避免全局变量的泛滥

 
阅读更多

转至 http://itindex.net/detail/50000-js-冲突-变量

为了避免变量之间的覆盖于冲突,可以生成命名空间,敏敏空间是一种特殊的前缀,在js中,通过{ }对象实现。

在不同的匿名函数中,根据功能声明一个不同的命名空间,每个匿名函数中GLOBAL对象的属性都不直接挂在GLOBAL上,而是挂在次匿名函数的命名空间下,如:

<script type="text/javascript">

var GLOBAL={}

</script>

 <script type="text/javascript">

(function(){

var a=123, a1=256;

GLOBAL.A={}

GLOBAL.A.str=a;

})();

</script>


<script type="text/javascript">

(function(){

var b1=123, b2=256;

GLOBAL.B={}

GLOBAL.B.str=a;

})();

</script>

如果同一个匿名函数中的程序非常复杂,变量名很多,命名空间可以进一步扩展,生成二级命名空间:

<script type="text/javascript">

    var GLOBAL={}

</script>

<script type="text/javascript">

   (function(){

var a=123, a1=256;

GLOBAL.A={};

GLOBAL.A.CAT={};

GLOBAL.A.DOG={};

GLOBAL.A.CAT.name="mini";

GLOBAL.A.CAT.move=function(){

}

GLOBAL.A.DOG.name="mini";

GLOBAL.A.DOG.move=function(){

}

   })();

</script>


因生成命名空间是非常常用的功能,可以进一步将生成命名空间的功能定义成一个函数,方便调用,如下:

<pre class="html" name="code"><script type="text/javascript">

   var GLOBAL={}

   GLOBAL.namespace=function(str){

      var arr=str.split("."), o=GLOBAL;
for(i=arr[0]=="GLOBAL"?1:0;i<arr.length; i++){

      o[arr[i]]=o[arr[i]] || {};

      o=o[arr[i]];

      }

   }</script>

调用命名空间具体操作

<script type="text/javascript">
 //=============================================================

//     功能A

//     工程师甲

//     email:ctkl68945@gmail.com     msn:ctkl68945@hotmail.com

//     2012-11-06

//=============================================================
 

(function(){

   var a=123, a1="hello world";

   GLOBAL.namespace("A.CAT");

   GLOBAL.namespace("A.DOG");

   GLOBAL.A.CAT.name="mini";

   GLOBAL.A.CAT.move=function(){

   }

   GLOBAL.A.DOG.name="mini";

   GLOBAL.A.DOG.move=function(){

   }

   GLOBAL.A.str=a;

   GLOBAL.A.str1=a1;

})();

依次类似,无论多人的直接团队开发,还是个人的间接团队合作,都需要良好的可维护性。

1、添加必要的代码注释

2、让JS不产生冲突,需避免全局变量的泛滥,合理使用命名空间

好开会好看

分享到:
评论

相关推荐

    理运用命名空间让js不产生冲突避免全局变量的泛滥

    JavaScript中的命名空间是一种组织代码的方式,它可以帮助我们避免全局变量的冲突,提高代码的可维护性和模块化。在JavaScript中,由于其动态类型和函数作用域的特性,全局变量的滥用很容易导致变量间的覆盖和冲突,...

    labview功能性全局变量的详细使用

    确保所有依赖于该全局变量的VI在使用前已经正确初始化,可以避免数据不一致的问题。 4. **使用功能性全局变量** “功能全局变量的使用(主).vi”示例展示了如何在主程序中读写全局变量。在VI的设计中,你可以通过...

    定义全局变量 变量 全局

    在MFC(Microsoft Foundation Classes)框架中,全局变量和函数的使用与标准C++有所不同,因为MFC工程通常由多个文件组成,需要一种方法来在这些文件之间共享数据和功能。这里将介绍两种在MFC工程中定义全局变量和...

    JavaScript声明全局变量访问方法

    - **作用域冲突**:全局变量可能会导致命名冲突,尤其是在大型项目中,多个模块可能无意间使用相同的全局变量名称,从而引发错误。 - **内存消耗**:全局变量在整个程序生命周期内都存在,会占用内存资源,因此不...

    C++中类使用全局变量

    因此,明智地命名全局变量以避免冲突。 4. **内存管理**:全局变量占用静态存储区域,它们在程序执行期间一直存在,直到程序结束。 5. **数据安全**:全局变量可以被程序任何部分修改,这可能导致数据不一致和难以...

    QT 使用全局变量的方法 - 郭小郭的专栏 - CSDN博客1

    3. **命名空间**:为了避免命名冲突,可以使用命名空间来组织全局变量。 4. **使用静态成员**:如果确实需要全局变量,优先考虑使用静态成员变量,因为它们与类相关联,提供了更好的封装。 5. **考虑使用单例模式**...

    C++全局变量初始化的一点总结

    初始化顺序方面,同一编译单元内的全局变量按照声明顺序进行初始化,但不同编译单元间的全局变量的初始化顺序是不确定的,这可能导致潜在的问题。如果全局变量之间存在依赖关系,最佳实践是重构代码以消除这种依赖。...

    C/C++ 跨文件共享全局变量Demo

    - **模块化**:全局变量不利于代码的模块化,因为它们在各个模块间耦合度高。 因此,尽管全局变量在某些场景下是必要的,但在设计时应尽量减少其使用,优先考虑使用局部变量、参数传递或静态类成员等方式来交换数据...

    在C/C++项目中使用全局变量的方法

    - 需要注意命名规范,避免全局变量名与其他文件中的局部变量或函数参数名冲突。 - 在大型项目中,过多的全局变量可能会导致代码难以维护,应尽量避免。 #### 方法二:通过`.h`文件集中管理全局变量 **定义与声明**...

    微信小程序全局变量改变监听的实现方法

    当时想到的就是使用全局变量,在 app.js 中定义好全局变量,点击组件页面时就修改全局变量的值,父页面同样使用全局变量的值,这样一来就可以动态打开/关闭弹出层且传递值了。 下面先看看 app.js 中怎么定义的: ...

    易语言源码易语言汇编设置全局变量源码.rar

    因此,在设计程序时应合理使用全局变量,尽量减少其数量,并避免在不必要的地方进行修改。 四、汇编设置全局变量 在易语言中,通过汇编语言设置全局变量通常涉及以下步骤: 1. 嵌入汇编:使用易语言的“插入汇编...

    VC中的全局变量.doc

    - **慎用全局变量**:尽量避免在非必要的场景下使用全局变量,尤其是对于大型项目,全局变量可能导致难以追踪的错误和难以维护的代码。 - **局部化**:若必须使用全局变量,考虑将其封装在类或结构体中,通过方法...

    采用全局变量方式实现多线程的通信

    数据竞争是当两个或更多线程同时修改同一全局变量时产生的,这可能导致不可预测的结果。为避免这种情况,我们需要同步机制,如互斥量(mutex)、临界区(critical section)或信号量(semaphore),来确保一次只有一...

    JavaScript全局变量的本质及页面共享问题 -页面

    JavaScript全局变量的本质...正确管理和使用全局变量,避免潜在的冲突和数据混乱,是每个JavaScript开发者应该掌握的基本技能。同时,掌握如何在不同的页面之间安全地共享数据,也是提高应用程序性能和用户体验的关键。

    VB 全局变量举例

    在VB(Visual Basic)编程语言中,全局变量是一种在整个程序范围内都可以访问的变量。与局部变量(仅在特定函数或子程序中有效)不同,全局变量可以在任何模块、窗体或标准模块中被调用,这使得它们在存储和传递数据...

    局部变量、全局变量、堆、堆栈、静态和全局

    全局变量在程序的生命周期内只初始化一次,如果在多个源文件中定义相同的全局变量,需要使用`extern`关键字来避免命名冲突。 堆是一种动态内存分配区域,程序员负责申请和释放内存。通过`new`或`malloc`等函数在堆...

    Symbol_labview_全局变量_

    通过使用枚举控件,用户可以更高效、更有序地控制这些全局变量,避免了读写冲突的问题。 1. **枚举控件**: 枚举控件是LabVIEW中常用的一种用户界面元素,它允许用户在一组预定义的选项中选择一个值。在这个项目中...

    C语言面试题大汇总之华为面试题:1、局部变量能否和全局变量重名;2、如何引用一个已经定义过的全局变量;3、全局变量可不可以定义在可被多个.C文件包含的头文件中 为什么;4、语句for( ;1 ;)有什么问题 它是什么意思……

    静态全局变量的作用域限制在定义该变量的源文件内,避免在其它源文件中引起错误。static 局部变量只被初始化一次,下一次依据上一次结果值。static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。 六...

Global site tag (gtag.js) - Google Analytics