JavaScript:将字符串数组转换为变量数组,并将其作为参数传递给函数

JavaScript:将字符串数组转换为变量数组,并将其作为参数传递给函数,javascript,arrays,Javascript,Arrays,我有一个数组,例如: argumentsArray=[arg1,arg2]; 我有一个功能: 函数1=函数{ console.logarg1; console.logarg2; }; 现在执行function1当然会抛出一个错误,因为arg1和arg2没有定义。但我不想定义这些,我希望它们用作参数,如下所示: 函数1=函数arg1,arg2{ console.logarg1; console.logarg2; }; 现在,我们可以在向函数1传递两个参数时执行函数1: 功能1字符串1、字符串2;

我有一个数组,例如:

argumentsArray=[arg1,arg2]; 我有一个功能:

函数1=函数{ console.logarg1; console.logarg2; }; 现在执行function1当然会抛出一个错误,因为arg1和arg2没有定义。但我不想定义这些,我希望它们用作参数,如下所示:

函数1=函数arg1,arg2{ console.logarg1; console.logarg2; }; 现在,我们可以在向函数1传递两个参数时执行函数1:

功能1字符串1、字符串2; //将记录string1和string2 但问题是,我无法更改function1的源代码。我无法编辑它的参数。我知道bind和apply函数,但它们会做错误的事情,因为它们实际应用字符串:

getFunction1WithArgumentsFromArray=函数{ 返回函数{ 返回函数1.applythis,argumentsArray; }; }; getFunction1WithArgumentsFromArray; //将返回函数1 arg1、arg2; 问题是,arg1和arg2还没有定义。它们还不是弦或其他东西。我的代码如下所示:

函数1=函数{ console.logarg1; console.logarg2; }; argumentsArray=[arg1,arg2]; defineArgs=函数{ arg1=嘿; arg2=你好; }; getFunction1WithArgumentsFromArray=函数参数数组{ argumentsToUse=将ArrayOfString转换为ArrayOfVariablesArgumentsArray; //怎么办??? 返回函数{ 返回函数1 argumentsToUse[0],argumentsToUse[1]; }; //或者我应该在这里放什么??? }; getFunction1WithArgumentsFromArray; //应将此邮件退回: //function1=functionarg1,arg2{ //console.logarg1; //console.logarg2; // }; //没有执行它。 因此,我真正想要的是一个函数,它将字符串数组转换为具有这些字符串名称的变量数组:

[arg1,arg2]->[arg1,arg2] 但直接这样做将是一个问题,因为JavaScript随后会搜索这些变量。正如我所说,这些变量没有定义

我的一个想法是使用apply并传递一个带有evalstring的数组,如下所示:

getFunction1WithArgumentsFromArray=函数{ 返回函数{ 返回函数1.apply 这 [evalargumentsArray[0],evalargumentsArray[1]] ; }; }; getFunction1WithArgumentsFromArray; //将返回的arg1未定义,因为eval按照我的定义执行函数
这对您来说似乎非常不必要,但正如我已经说过的,我无法更改function1,因此我必须在另一个函数中创建它的参数列表。我的意思是,我当然可以更改它,但我正在处理的项目使用数组来获取参数。

正如我在评论中所说,定义arg1和arg2似乎是不必要的,因为无论您在哪里创建对象,您都必须持有对它的一些引用

当您将这些参数传递给function1时,您可以很容易地访问如下参数

function1 = function () {
  var i;
  for(i=0; i<arguments.length;i++){
  console.log(arguments[i]); // do anything with arguments[i] == arg1, arg2, 
  ...
 }
};

如果function1试图处理未定义的变量,那么它可能是错误的。您是如何陷入这种特殊困境的…?您可以访问传递给function1的arguemtn w/arguments对象,如->arguments[index]。因此,定义arg1和arg2似乎是不必要的。您似乎对变量的含义和用法有着根本性的误解。如果不站在头上,使用eval或window[varname]之类的工具,就几乎不可能将变量名作为字符串映射到变量,反之亦然。基本上,您需要构造代码。如果希望具有命名值,则可以使用其名称作为字符串进行访问,然后使用对象和属性。