通过采用封闭数组值 [英] passing array value using closure

查看:132
本文介绍了通过采用封闭数组值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请告诉我从另一个功能获得多个本地阵列的最佳方式。我做类似这样的东西。并尽可能连接到一个功能,ARR1 = F1()变量名,做这些需要被声明为本地,VAR ARR1 = F1()。

 <脚本>    功能ArrValues​​(ARR){
        VAR阵列=编曲;
        函数f1(){
            变种ID = [];
            ID = ['葡萄','桃子','李子'];
            返回ID
        };
        函数f2(){
            VAR南= [];
            南= ['车','摩托车','树'];
            回南
        };
        功能F3(){
            VAR民= [];
            NUM = ['200','1000','350'];
            返回民
        };        如果(阵列=='一'||阵列=='所有'){ARR1 = F1()};
        如果(阵列=='二'||阵列=='所有'){VAR ARR2 = F2()};
        如果(阵列=='三'||阵列=='所有'){VAR ARR3 = F3()};        gotIt(ARR1,ARR2,ARR3)
    }    功能gotIt(ARR1,ARR2,ARR3){
        警报(ARR1);
        警报(ARR2);
        警报(ARR3);
    }< / SCRIPT>< D​​IV ID =一的onclick =ArrValues​​(this.id)>吲; / DIV>
< D​​IV ID =二的onclick =ArrValues​​(this.id)>二< / DIV>
< D​​IV ID =三化的onclick =ArrValues​​(this.id)>三< / DIV>
< D​​IV ID =所有的onclick =ArrValues​​(this.id)>所有< / DIV>


解决方案

嗯,这要看情况。既然你是值传递给 gotIt 直接,它看起来并不像你需要他们这样在全球应该有 VAR 对所有的人。

这是说,你的code是相当混乱,有点多余。试试这个:

 函数ArrValues​​(ARR){
    VAR ARR1 =改编=='一'|| ARR =='全部'? ['葡萄','桃子','李子']:[],
        ARR2 = ARR =='二'|| ARR =='全部'? ['汽车','摩托车','树']:[],
        ARR3 = ARR =='三'|| ARR =='全部'? ['200','1000','350']:[];
    gotIt(ARR1,ARR2,ARR3);
}

请注意,我已经给每一个空数组的默认值,否则,你最终会与不确定的变数。

Whats the best way of getting multiple local arrays from another function. I am doing something similar to this. And as far as the variable names attached to a function, "arr1=f1()", do these need to be declared as local ,"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>

解决方案

Well that depends. Since you are passing the values to gotIt directly, it doesn't look like you need them globally so should have var on all of them.

That said, your code is quite messy and a little redundant. Try this:

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);
}

Note that I've given each one a default value of an empty array, otherwise you would end up with undefined variables.

这篇关于通过采用封闭数组值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆