早些時候,我發佈了一個關於訪問存儲在函數中的數組值的問題,
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