Раньше я задавал вопрос о доступе к значениям массива, хранящимся в функциях,
passing array value using closure, и ему сказали, что этот код выполнит эту работу.javascript массивы и замыкания
<script>
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);
}
function gotIt(arr1,arr2,arr3){
alert(arr1);
alert(arr2);
alert(arr3);
}
</script>
Я обновил код, как показано ниже. Будет ли это хорошим методом возврата только массива, который я хочу, не отправив его в качестве аргумента другой функции?
<script>
function ArrValues(arr) {
var arr1 = arr=='one' || arr=='all' ? ['grapes','peaches','plums'] : [];
if(arr1.length>0){
return arr1;
};
arr2 = arr=='two' || arr=='all' ? ['car','motorcycle','tree'] : [];
if(arr2.length>0){
return arr2;
};
arr3 = arr=='three' || arr=='all' ? ['200','1000','350'] : [];
if(arr3.length>0){
return 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>
Не связано с вопросом, но важно: в коде, который они предложили, каждая переменная объявляется локально, но в вашей новой версии вы только объявляете 'arr1', делая две другие глобальные. Вы должны добавить 'var' перед' arr2' и 'arr3'. – bfavaretto