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 に答える