【发布时间】:2013-03-04 22:44:26
【问题描述】:
从另一个函数获取多个本地数组的最佳方法是什么。我正在做类似的事情。至于附加到函数的变量名“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>
【问题讨论】:
-
总是在范围的顶部使用
var,或者至少在一个逻辑位置(例如在for的顶部,记住它无论如何都被吊起)。很难按原样写。如果没有var注释,标识符将被解析为“全局”。因为它 (arr1) 之前没有被分配,所以如果第一个分支永远无法到达,它将在此处产生ReferenceError。搜索[javascript] var hoist有很多相关问题。 -
(去掉
<div id="one" ..>元素可以看到ReferenceError。)
标签: javascript arrays closures