Javascript:使用全局变量合适吗?
所以我有多个不同的函数——我们把它们叫做函数A,B,C,…,Z。我们把函数A叫做“开始状态”,把函数Z叫做“结束状态” 我还有一个数组,只有函数A使用它来选择一个索引,以便传递给以后的函数使用。所有后面的函数都不使用数组,只使用索引 但是,在函数Z之后,它需要从数组中删除该索引并返回A。A将再次从同一数组中选择一个索引,但这次数组中的索引减少了一个 如果没有全局变量,这意味着我必须将数组作为参数从A传递到Z,即使B到Y甚至不会触及数组 代码方面的示例:Javascript:使用全局变量合适吗?,javascript,global-variables,Javascript,Global Variables,所以我有多个不同的函数——我们把它们叫做函数A,B,C,…,Z。我们把函数A叫做“开始状态”,把函数Z叫做“结束状态” 我还有一个数组,只有函数A使用它来选择一个索引,以便传递给以后的函数使用。所有后面的函数都不使用数组,只使用索引 但是,在函数Z之后,它需要从数组中删除该索引并返回A。A将再次从同一数组中选择一个索引,但这次数组中的索引减少了一个 如果没有全局变量,这意味着我必须将数组作为参数从A传递到Z,即使B到Y甚至不会触及数组 代码方面的示例: function A() { va
function A() {
var arr = [4, 1, 2, 5]; // Some array
var ind = arr[0]; // Some index
// Pass index and array to B
B(ind, arr);
}
function B(index, array) {
// B will do some stuff with index
C(index, array);
}
function C(index, array) {
// C will do some stuff with index
D(index, array);
}
// ...
// Repeat until Z
// ...
function Z(index, array) {
// Remove it
array.splice(0,1);
// Go back to A() again
A();
}
这看起来很俗气,这样做对我来说没有多大意义。在这种情况下,只使用全局变量是否合适?如果没有,在不传递不必要的参数的情况下完成上述任务的更好选项是什么?只需创建一个闭包:
(function() {
var pseudoGlobalArray = [];
function A() {
pseudoGlobalArray[0] = 42; // OK
}
function B() {
pseudoGlobalArray[1] = 43; // OK
}
}());
pseudoGlobalArray[2] = 44; // don't do this, array not even visible here