js全局变量污染问题

 javaScript 可以随意定义保存所有应用资源的全局变量。但全局变量可以削弱程序灵活性,增大了模块之间的耦合性。在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法

一.定义全局变量命名空间
只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下

var MY={};        my.name={            big_name:"zhangsan",            small_name:"lisi"        };        my.work={            school_work:"study",            family_work:"we are"       };二 . 利用匿名函数将脚本包裹起来

(function(){    var exp={};    var name="aa";    exp.method=function(){        return name;    };    window.ex=exp;})();        alert(ex.method())
 

 


时间: 2024-10-14 19:45:44

js全局变量污染问题的相关文章

防止js全局变量污染方法总结

javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法 一.定义全局变量命名空间 只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下 var MY={}; my.name={ big_name:"zhangsan", small_name:"lisi" }; my.work

[转] 防止js全局变量污染方法总结

javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法 一.定义全局变量命名空间只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下 var MY={};my.name={big_name:"zhangsan",small_name:"lisi"};my.work={scho

避免JS全局变量冲突

一.原则1.1 用匿名函数将脚本包起来1.2 使用命名空间(多级) 二.改进过程 2.1 原始数据(a.js和b.js都有全局变量window.a,导致冲突,全局变量属于window) //a.js<script type="text/javascript"> var a=123,b="hello world"; </script> //b.js <script type="text/javascript">

*防止JS全局污染

javaScript 可以随意定义保存所有应用资源的全局变量.但全局变量可以削弱程序灵活性,增大了模块之间的耦合性.在多人协作时,如果定义过多的全局变量 有可能造成全局变量冲突,也就是全局变量污染问题,以下是两种解决办法 一.定义全局变量命名空间只创建一个全局变量,并定义该变量为当前应用容器,把其他全局变量追加在该命名空间下 var person1={ name:'jacksplwxy', language:'中文', intro:function(){ console.log('我的名字是:'

jquery easyui树的简答构造+动态生成js全局变量

jquery easyui树的简答构造: JSP页面 组织机构: <input id="p_organId" name="p_organId" style="width: 160px;height: 28px;"> function loadOrgan(){ organ_combotree = $("#p_organId").combotree({ url:'${ctxFront}/cust/tree', mult

js全局变量与局部变量 预解析与作用域链详解

局部变量和全局变量同名时,会隐藏这个全局变量: 4.变量 关键字: 4.变量 4.1 变量的类型 JS是松散类型的语言 4.2 变量的声明 var 声明是变量的标准声明 var 声明的变量是永久性的,不能用delete运算符删除 全局对象,调用对象初始化时,JS解析器会在相应的代码段里寻找var声明的变量, 然后在全局对象,调用对象中创建相应的属性,此时它是未赋值的(undefined), 当程序执行到相应的var声明代码段时才会给相应对象的属性赋值 重复的声明:根据以上var声明作用的理解,重

25.函数例题-预解析 作用域 、函数变量优先级、全局变量污染(直接在全局声明 、 函数里的变量没声明)但是函数里的变量没声明造成的全局变量污染有个前提,函数要被调用)

1.  return foo()   foo 没有return值,故为undefined.   2.      a b 在函数作用域内,外界找不到   var a = b =3; b 也算用var 声明了,只不过b 是在全局隐式var 了一个b ,在函数内部找不到变量的情况下就去全局找,全局找不到报错.    语法有错误,程序一句都不会执行,执行阶段有错误,会执行没错的代码,在执行出错的地方报错.  函数或则匿名函数体内声明变量是为了避免全局变量污染 重要例题:  函数没执行,全局没找到 b报错

Javascript匿名函数的作用之一:创建临时的命名空间,防止全局变量污染

如果你写了一段js模块的代码,这段代码将用在不同的程序中(对客户端Javascript来说通常是在各种各样的网页中).假定这段代码定义了一个用以存储中间计算结果的变量,问题来了,这个变量可能会同其他代码中的全局变量发生冲突.解决的办法是将模块代码放入一个函数内部,然后立即调用这个函数.这样全局变量就变成了函数内部的局部变量: function() myModule(){ //模块代码,这个模块所用的所有变量都是局部变量,而不会污染全局命名空间 } myModule(); //立即调用这个函数 这

全局变量污染 闭包 命名空间

原则 用匿名函数将脚本包起来: 使用多级命名空间. 这第二条“使用多级命名空间”这个,我觉得并不是很完美的好主意.因为如果级数太多的话会造成变量名字变得长的一逼. 改进过程 原始代码 没有做过任何优化的满目疮痍的代码.a.js 和 b.js 都有全局变量 window.a ,导致冲突,全局变量属于 window 作用域下的. //a.js <script type="text/javascript"> //都什么时代了,script标签还写type属性呢?黄牌警告!下次绝逼