所以我有多种不同的功能 - 让我们称它们为功能A,B,C,......,Z。让我们调用功能A"启动状态"功能Z"结束状态"。
我还有一个数组,只有函数A用来选择一个索引来传递给以后使用的函数。所有后来的函数都不使用数组,只使用索引。
然而,在函数Z之后,它需要从数组中删除该索引并返回到A.再次,A将从同一个数组中选择一个索引,但这次数组中的索引少一个。
没有全局变量,这意味着我必须将数组作为参数从A传递给Z,即使B到Y甚至不会触及数组。
代码示例:
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();
}
这看起来很俗气,对我来说做这样的事情并没有多大意义。在这种情况下仅使用全局变量是否合适?如果没有,那么在没有不必要的参数传递的情况下完成上述操作的更好选择是什么?
答案 0 :(得分:2)
只需创建一个闭包:
(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