Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:使用全局变量合适吗?_Javascript_Global Variables - Fatal编程技术网

Javascript:使用全局变量合适吗?

Javascript:使用全局变量合适吗?,javascript,global-variables,Javascript,Global Variables,所以我有多个不同的函数——我们把它们叫做函数A,B,C,…,Z。我们把函数A叫做“开始状态”,把函数Z叫做“结束状态” 我还有一个数组,只有函数A使用它来选择一个索引,以便传递给以后的函数使用。所有后面的函数都不使用数组,只使用索引 但是,在函数Z之后,它需要从数组中删除该索引并返回A。A将再次从同一数组中选择一个索引,但这次数组中的索引减少了一个 如果没有全局变量,这意味着我必须将数组作为参数从A传递到Z,即使B到Y甚至不会触及数组 代码方面的示例: function A() { va

所以我有多个不同的函数——我们把它们叫做函数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();
}
这看起来很俗气,这样做对我来说没有多大意义。在这种情况下,只使用全局变量是否合适?如果没有,在不传递不必要的参数的情况下完成上述任务的更好选项是什么?

只需创建一个闭包:

(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