避免在javascript中使用全局变量的最佳方法是什么?

时间:2013-06-28 03:00:12

标签: javascript function variables global-variables

我需要在多个javascript函数中访问大约80个变量。我知道使用全局变量是一种不好的做法,那么避免使用全局变量的最佳方法是什么?我每次通过函数时都应该将它们作为参数传递吗?可能更糟糕的是将它们称为全局变量,我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用名称空间:

myapp=myapp||{};
myapp.validators=myapp.validators||{};
myapp.validators.isNumber=function(){...

尝试创建在对象中声明其变量和函数(属性和方法)的对象或对象实例。

您可以在只有一个实例的地方使用object literal:

myapp.validators={
  isNumber:function(){},
  isDate:function(){}
}

或者当您需要创建多个实例时,可以使用constructor functions

myapp.controls.myButton=funciton(){
  this.caption="hello world";
}
myapp.constrols.myButton.prototype.addEventHandler=function(){};

在全局范围内声明80个变量通常是设计错误的标志,并且您的代码与其他代码不能很好地兼容,因为您可能在变量名称中存在冲突。

对你当前代码影响很小的东西可能是将你的代码包装在一个函数中(比如jquery)并创建一个大的闭包(比如Arun提到的):

(function(window,undefined){
//your code
})(window);

答案 1 :(得分:1)

一些想法:

  1. 将这些变量组织(封装)为某些对象(函数) 与命名空间。
  2. 使用闭包。关闭是本地(私人) 函数的变量 - 函数后保持活动状态 回。
  3. 编写方法并利用返回值。