在Javascript中使用eval()解包数组

在Javascript中使用eval()解包数组,javascript,eval,Javascript,Eval,我有一个数组需要解包 所以,从类似 var params = new Array(); params.push("var1"); params.push("var2"); 我需要一些类似的东西 “var1”、“var2” 我尝试使用eval,但是eval()给了我类似于var1、var2的东西……我自己不想插入引号,因为传递的变量可以是整数或其他类型。我需要将它传递给一个函数,这就是为什么我不能遍历数组并将其放入字符串中 这里的首选解决方案是什么?如果您有一个值数组,希望传递给填充形式参数的函

我有一个数组需要解包

所以,从类似

var params = new Array();
params.push("var1");
params.push("var2");
我需要一些类似的东西

“var1”、“var2”

我尝试使用eval,但是eval()给了我类似于var1、var2的东西……我自己不想插入引号,因为传递的变量可以是整数或其他类型。我需要将它传递给一个函数,这就是为什么我不能遍历数组并将其放入字符串中


这里的首选解决方案是什么?

如果您有一个值数组,希望传递给填充形式参数的函数,则可以使用函数原型的方法

var arr = [1, 2, "three"];

function myFunc(a, b, c) {
   // a = 1, b = 2, c = "three"
   ...
}

myFunc.apply(this, arr);

顺便说一下,上一条语句中的
this
参数可以设置为任何对象,以在
myFunc

中设置
this
的值。如果您有一个值数组要传递给填充形式参数的函数,那么您可以使用函数原型的方法

var arr = [1, 2, "three"];

function myFunc(a, b, c) {
   // a = 1, b = 2, c = "three"
   ...
}

myFunc.apply(this, arr);

顺便说一下,上一条语句中的
this
参数可以设置为任何对象,以在
myFunc
中设置
this
的值,这将生成所需的输出

var params = new Array();
params.push("var1");
params.push("var2");

var s = "\"" + params.join("\",\"") + "\"";

这将生成所需的输出

var params = new Array();
params.push("var1");
params.push("var2");

var s = "\"" + params.join("\",\"") + "\"";

我怀疑你能否让JavaScript添加“本身,除非你可能使用JSON.stringify()”。它们只是字符串分隔符,不属于字符串值。问题是,我想传递变量的值……它们也可能不总是字符串。我想知道这是否可能。你希望“其他类型”如何序列化?当你说“传递值”时。。。您要传递到哪里?我正在尝试提出一个通用的解决方案,因此在传递时,我不知道函数将接受多少参数。因此,我将它们推入阵列。然后,我需要打开包装并传递它们。因此,放入数组的变量可能都是不同的类型:字符串、整数和其他数组。解包时,我希望能够执行如下操作:DoSomething(param1,param2,param3),其中param1。。param3来自数组。我在这里发布:没有真正的答案我怀疑你可以让JavaScript添加“本身,除非你可能使用JSON.stringify()”。它们只是字符串分隔符,不属于字符串值。问题是,我想传递变量的值……它们也可能不总是字符串。我想知道这是否可能。你希望“其他类型”如何序列化?当你说“传递值”时。。。您要传递到哪里?我正在尝试提出一个通用的解决方案,因此在传递时,我不知道函数将接受多少参数。因此,我将它们推入阵列。然后,我需要打开包装并传递它们。因此,放入数组的变量可能都是不同的类型:字符串、整数和其他数组。解包时,我希望能够执行如下操作:DoSomething(param1,param2,param3),其中param1。。param3来自数组。我在这里发帖:没有真正的答案,我从来不知道apply的存在。然而,这里的目的是什么?关于“这个”,我不太清楚。我需要它吗?如果您不确定,请使用
this
保留当前上下文,或传递
null
以使用全局上下文。正如我所说,第一个参数控制函数中的
这个
所指的内容。太好了,这正是我所需要的。谢谢你,肖恩!谢谢,我从来不知道apply的存在。然而,这里的目的是什么?关于“这个”,我不太清楚。我需要它吗?如果您不确定,请使用
this
保留当前上下文,或传递
null
以使用全局上下文。正如我所说,第一个参数控制函数中的
这个
所指的内容。太好了,这正是我所需要的。谢谢你,肖恩!