0

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

4

2 回答 2

1

您可以使用命名空间:

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

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

您可以在只有一个实例的情况下使用对象文字:

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

或者当您需要创建多个实例时,您可以使用构造函数

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

在全局范围内声明 80 个变量通常是设计不良的标志,并且您的代码无法与其他代码很好地配合使用,因为变量名称可能会发生冲突。

对您当前代码的影响非常低的东西可能会将您的代码包装在一个函数中(就像 jquery 所做的那样)并创建一个大闭包(就像 Arun 提到的那样):

(function(window,undefined){
//your code
})(window);
于 2013-06-28T03:14:44.580 回答
1

一些想法:

  1. 将这些变量组织(封装)为具有命名空间的一些对象(函数)。
  2. 使用闭包。闭包是函数的本地(私有)变量 - 在函数返回后保持活动状态。
  3. 编写一个方法并利用返回值。
于 2013-06-28T03:18:23.110 回答