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