转至 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不产生冲突,需避免全局变量的泛滥,合理使用命名空间
好开会好看
相关推荐
JavaScript中的命名空间是一种组织代码的方式,它可以帮助我们避免全局变量的冲突,提高代码的可维护性和模块化。在JavaScript中,由于其动态类型和函数作用域的特性,全局变量的滥用很容易导致变量间的覆盖和冲突,...
确保所有依赖于该全局变量的VI在使用前已经正确初始化,可以避免数据不一致的问题。 4. **使用功能性全局变量** “功能全局变量的使用(主).vi”示例展示了如何在主程序中读写全局变量。在VI的设计中,你可以通过...
在MFC(Microsoft Foundation Classes)框架中,全局变量和函数的使用与标准C++有所不同,因为MFC工程通常由多个文件组成,需要一种方法来在这些文件之间共享数据和功能。这里将介绍两种在MFC工程中定义全局变量和...
- **作用域冲突**:全局变量可能会导致命名冲突,尤其是在大型项目中,多个模块可能无意间使用相同的全局变量名称,从而引发错误。 - **内存消耗**:全局变量在整个程序生命周期内都存在,会占用内存资源,因此不...
因此,明智地命名全局变量以避免冲突。 4. **内存管理**:全局变量占用静态存储区域,它们在程序执行期间一直存在,直到程序结束。 5. **数据安全**:全局变量可以被程序任何部分修改,这可能导致数据不一致和难以...
3. **命名空间**:为了避免命名冲突,可以使用命名空间来组织全局变量。 4. **使用静态成员**:如果确实需要全局变量,优先考虑使用静态成员变量,因为它们与类相关联,提供了更好的封装。 5. **考虑使用单例模式**...
初始化顺序方面,同一编译单元内的全局变量按照声明顺序进行初始化,但不同编译单元间的全局变量的初始化顺序是不确定的,这可能导致潜在的问题。如果全局变量之间存在依赖关系,最佳实践是重构代码以消除这种依赖。...
- **模块化**:全局变量不利于代码的模块化,因为它们在各个模块间耦合度高。 因此,尽管全局变量在某些场景下是必要的,但在设计时应尽量减少其使用,优先考虑使用局部变量、参数传递或静态类成员等方式来交换数据...
- 需要注意命名规范,避免全局变量名与其他文件中的局部变量或函数参数名冲突。 - 在大型项目中,过多的全局变量可能会导致代码难以维护,应尽量避免。 #### 方法二:通过`.h`文件集中管理全局变量 **定义与声明**...
当时想到的就是使用全局变量,在 app.js 中定义好全局变量,点击组件页面时就修改全局变量的值,父页面同样使用全局变量的值,这样一来就可以动态打开/关闭弹出层且传递值了。 下面先看看 app.js 中怎么定义的: ...
因此,在设计程序时应合理使用全局变量,尽量减少其数量,并避免在不必要的地方进行修改。 四、汇编设置全局变量 在易语言中,通过汇编语言设置全局变量通常涉及以下步骤: 1. 嵌入汇编:使用易语言的“插入汇编...
- **慎用全局变量**:尽量避免在非必要的场景下使用全局变量,尤其是对于大型项目,全局变量可能导致难以追踪的错误和难以维护的代码。 - **局部化**:若必须使用全局变量,考虑将其封装在类或结构体中,通过方法...
数据竞争是当两个或更多线程同时修改同一全局变量时产生的,这可能导致不可预测的结果。为避免这种情况,我们需要同步机制,如互斥量(mutex)、临界区(critical section)或信号量(semaphore),来确保一次只有一...
JavaScript全局变量的本质...正确管理和使用全局变量,避免潜在的冲突和数据混乱,是每个JavaScript开发者应该掌握的基本技能。同时,掌握如何在不同的页面之间安全地共享数据,也是提高应用程序性能和用户体验的关键。
在VB(Visual Basic)编程语言中,全局变量是一种在整个程序范围内都可以访问的变量。与局部变量(仅在特定函数或子程序中有效)不同,全局变量可以在任何模块、窗体或标准模块中被调用,这使得它们在存储和传递数据...
全局变量在程序的生命周期内只初始化一次,如果在多个源文件中定义相同的全局变量,需要使用`extern`关键字来避免命名冲突。 堆是一种动态内存分配区域,程序员负责申请和释放内存。通过`new`或`malloc`等函数在堆...
通过使用枚举控件,用户可以更高效、更有序地控制这些全局变量,避免了读写冲突的问题。 1. **枚举控件**: 枚举控件是LabVIEW中常用的一种用户界面元素,它允许用户在一组预定义的选项中选择一个值。在这个项目中...
静态全局变量的作用域限制在定义该变量的源文件内,避免在其它源文件中引起错误。static 局部变量只被初始化一次,下一次依据上一次结果值。static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。 六...