1

从另一个函数获取多个本地数组的最佳方法是什么。我正在做类似的事情。至于附加到函数的变量名“arr1=f1()”,是否需要将它们声明为本地“var arr1=f1()”。

<script>

    function ArrValues(arr){
        var array=arr;
        function f1(){
            var ID=[];
            ID=['grapes','peaches','plums'];
            return ID
        };
        function f2(){
            var Nam=[]; 
            Nam=['car','motorcycle','tree'];
            return Nam
        };
        function f3(){
            var Num=[]; 
            Num=['200','1000','350'];
            return Num
        };

        if(array=='one' || array=='all'){ arr1=f1()};
        if(array=='two' || array=='all'){ var arr2=f2()};
        if(array=='three' || array=='all'){ var arr3=f3()};

        gotIt(arr1,arr2,arr3)
    }

    function gotIt(arr1,arr2,arr3){
        alert(arr1);
        alert(arr2);
        alert(arr3);
    }

</script>

<div id="one" onclick="ArrValues(this.id)">one</div>
<div id="two" onclick="ArrValues(this.id)">two</div>
<div id="three"onclick="ArrValues(this.id)">three</div>
<div id="all"onclick="ArrValues(this.id)">all</div>
4

1 回答 1

0

那要看情况了。由于您将值gotIt直接传递给,因此看起来您并不需要它们全局,所以应该var对它们都有。

也就是说,您的代码非常混乱且有点多余。试试这个:

function ArrValues(arr) {
    var arr1 = arr=='one' || arr=='all' ? ['grapes','peaches','plums'] : [],
        arr2 = arr=='two' || arr=='all' ? ['car','motorcycle','tree'] : [],
        arr3 = arr=='three' || arr=='all' ? ['200','1000','350'] : [];
    gotIt(arr1,arr2,arr3);
}

请注意,我已经为每个数组指定了一个空数组的默认值,否则您最终会得到未定义的变量。

于 2013-03-04T22:50:21.393 回答