javascript到底使用全局变量还是局部变量?

988kook 2011-09-01 12:29:45
第一种情况:javascript经常变化的值使用全局变量还是局部变量 局部变量应该怎么实现
var a=0;
function aaa()
{
a=0;
}
function bbb()
{
a=1;
}
function ccc()
{
alert(a);这个要得到改变的最终值 用局部变量怎么实现
}
第二种情况:
由后台取值的数据
比如
var dt;这个是全局变量 使用全局变量还是局部变量 局部变量应该怎么实现
function aa()
{
dt=//调用后台方法查询数据得到数据赋值给dt;
}
function bb()
{
alert(dt.Rows.length);
}
function cc()
{
//操作dt
}
//这样子 假如
//会重新进入后台取值
function dd()
{
aa();
}

我该怎么办?
...全文
469 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆虫 2011-09-01
  • 打赏
  • 举报
回复
看你怎么去用这两个东西了
但是全局变量能少用就少用 常改变的能用函数处理改用函数返回值 实在没辙了 再用全局变量
局部变量就没啥说的了 大家用的最多的就是局部变量
BLUE_LG 2011-09-01
  • 打赏
  • 举报
回复
视情况而定。
上网自己找点东西学学吧。。
dcyydc 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jike316 的回复:]
全局是大家都可以用到的,局部就值某一个函数对象内可以用。经常用到的数据并且只有一份,那就使用全局变量
[/Quote]
同意
2399 2011-09-01
  • 打赏
  • 举报
回复
全局是大家都可以用到的,局部就值某一个函数对象内可以用。经常用到的数据并且只有一份,那就使用全局变量
MuBeiBei 2011-09-01
  • 打赏
  • 举报
回复
看具体需要而定~·各有各的优点~·
KK3K2005 2011-09-01
  • 打赏
  • 举报
回复
无所谓 全局和局部
关键是要让 需要的访问
988kook 2011-09-01
  • 打赏
  • 举报
回复
恩 是这样 我没有执行b函数
这样子就OK了

(function(){
var a=0;
b();
function b()
{
a=1;
}
function c()
{
alert(a);
}
c();
alert(a);
}
)();
988kook 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 koo42636880 的回复:]
有我必沉!
[/Quote]


(function(){
var a=0;
function b()
{
a=1;
}
function c()
{
alert(a);
}
c();
}
)();

这个引起闭包问题 你有什么解决办法? c()里的alert(a)一直是0
大漠孤城 2011-09-01
  • 打赏
  • 举报
回复
路过,学习!!!!
988kook 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 koo42636880 的回复:]

引用 9 楼 obananao 的回复:

引用 7 楼 koo42636880 的回复:

全局变量在web当中,全部属于window对象。一般倡导的都是仅可能的少用全局变量,因为过多的使用全局变量有可能导致变量名被覆盖,程序出错,不利于程序的维护。而且这种情况很多出现在团队合作开发的情况下。
举例:
甲工程师写了一个JS:<script>var a=1;function aa()……
[/Quote]
thank you
koo42636880 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 obananao 的回复:]

引用 7 楼 koo42636880 的回复:

全局变量在web当中,全部属于window对象。一般倡导的都是仅可能的少用全局变量,因为过多的使用全局变量有可能导致变量名被覆盖,程序出错,不利于程序的维护。而且这种情况很多出现在团队合作开发的情况下。
举例:
甲工程师写了一个JS:<script>var a=1;function aa(){alert(a);}</script>
乙工……
[/Quote]
不仅仅是函数,你定义的变量也得归入匿名函数,各个函数之间共享的是Global对象,通过它获得自己想要的值.
988kook 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 koo42636880 的回复:]

全局变量在web当中,全部属于window对象。一般倡导的都是仅可能的少用全局变量,因为过多的使用全局变量有可能导致变量名被覆盖,程序出错,不利于程序的维护。而且这种情况很多出现在团队合作开发的情况下。
举例:
甲工程师写了一个JS:<script>var a=1;function aa(){alert(a);}</script>
乙工程师可能并不知道甲工程师在以前做了什么,他只管自己功能……
[/Quote]

定义域?也就是说把用到这个变量的函数放到匿名函数里边 是吧~
(把我写的代码用放在这里边)();
koo42636880 2011-09-01
  • 打赏
  • 举报
回复

有我必沉!
koo42636880 2011-09-01
  • 打赏
  • 举报
回复
全局变量在web当中,全部属于window对象。一般倡导的都是仅可能的少用全局变量,因为过多的使用全局变量有可能导致变量名被覆盖,程序出错,不利于程序的维护。而且这种情况很多出现在团队合作开发的情况下。
举例:
甲工程师写了一个JS:<script>var a=1;function aa(){alert(a);}</script>
乙工程师可能并不知道甲工程师在以前做了什么,他只管自己功能的实现,所以写了一个JS:<script>var a =2; function bb(){alert(a);}</script>

若这两段代码出现在同一个页面当中,那么甲定义的变量a的值就被乙覆盖了..而且全部变量的错误可能相对于这更严重,导致你排错的时候很困难!很多书上都说过,过多的全局变量的致命的错误.!
这个时候最好使用匿名函数,将全局变量限制在一个作用域范围内:
(function(){
var a=1;
function aa(){alert(a);}

})();
这样多次的定义a变量就不会被覆盖,他们都成为了局部变量。

现在回答你说的两种情况的问题,一般解决你说的两种问题的方案是定义命名空间:
就像这样:
var Global={};
甲:(function(){
Global.A=1;
function aa(){alert(Global.A);}

})();
乙:
(function(){
Global.B=2
function bb(){ alert(Global.B);}
})();

这样只要工程师遵循一定的规范,就解决了你说的问题..!

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧