早些时候,我发布了一个关于访问存储在函数中的数组值的问题,
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',使其他两个全局变量。你应该在'arr2'和'arr3'之前加'var'。 – bfavaretto 2013-03-06 03:03:50