Javascript 以数组形式发送参数

Javascript 以数组形式发送参数,javascript,arrays,parameter-passing,Javascript,Arrays,Parameter Passing,我是否可以将所有局部变量推到一个数组中,并将其从ArrValues传递到doit1我正试图找到一种方法,只调用和收集我想要的数组 a="doit1"; arr="all"; ArrValues(a,arr); function ArrValues(a,arr){ var func=a; var num=arr; var ID = num=='one' || num=='all' ? ['ID1','ID2','ID3','ID4'] : []; var Nam = num=

我是否可以将所有局部变量推到一个数组中,并将其从
ArrValues
传递到
doit1
我正试图找到一种方法,只调用和收集我想要的数组

a="doit1";

arr="all";
ArrValues(a,arr);

function ArrValues(a,arr){

  var func=a;
  var num=arr;
  var ID = num=='one' || num=='all' ? ['ID1','ID2','ID3','ID4'] : [];
  var Nam = num=='two' || num=='all' ? ['dog','bike','horn','goat'] : [];
  var X = num=='three' || num=='all' ? ['696','258','601','204'] : [];
  var Y = num=='four' || num=='all' ? ['119','590','594','125'] : [];
  window[func](ID,Nam,X,Y);
 }
function doit1(ID,Nam,X,Y){
 alert(ID);
 alert(Nam);
 alert(X);
 alert(Y);
}

传递对象而不是传递数组

{
    ID: num=='one' || num=='all' ? ['ID1','ID2','ID3','ID4'] : [],
    Nam: num=='two' || num=='all' ? ['dog','bike','horn','goat'] : [],
    X: num=='three' || num=='all' ? ['696','258','601','204'] : [],
    Y: num=='four' || num=='all' ? ['119','590','594','125'] : [],
}

试试这个:

var dict = { 'ID' : ID, 'Nam' : Nam, 'X' : X, 'Y' : Y };
并将其传递给函数。(例如,
doIt(dict);
窗口[func](dict);


然后,您可以轻松访问以下任何对象变量:

function doIt(d)
{
    alert(d.ID);
    alert(d.Nam);
    alert(d.X);
    alert(d.Y);
}

您可以将所有内容填充到一个对象中,并将该对象传递给下一个函数。在下一个函数中,您可以通过该对象访问值

function ArrValues(func, num) {

  var obj = {}
    , all = (num === 'all')
    ;

  obj.ID = (all || num === 'one') ? ['ID1', 'ID2', 'ID3', 'ID4'] : [];
  obj.Nam = (all || num === 'two') ? ['dog', 'bike', 'horn', 'goat'] : [];
  obj.X = (all || num === 'three') ? ['696', '258', '601', '204'] : [];
  obj.Y = (all || num === 'four') ? ['119', '590', '594', '125'] : [];

  window[func](obj);
}

function doit1(obj) {
  alert(obj.ID);
  alert(obj.Nam);
  alert(obj.X);
  alert(obj.Y);
}

a = "doit1";
arr = "all";
ArrValues(a, arr);

单个数组并保留它们的名称?什么的名称?别管名称部分。使用对象与使用速度更快的全局数组有什么区别?我试图保持局部范围。我需要它尽可能快地执行。全局数组不会更快!数组是一种特殊类型的对象,但是在全局/局部范围内访问数组、对象和变量的成员基本上是一样的。您可以通过更改声明对象的位置来更改其范围。