将数组传递给Javascript函数时只传递第一个元素
我使用以下代码将数组传递给变量javascript函数将数组传递给Javascript函数时只传递第一个元素,javascript,arrays,function,parameters,Javascript,Arrays,Function,Parameters,我使用以下代码将数组传递给变量javascript函数 function parse(fn, args) { var parameters = []; if (args) { for (var i = 0; i < args.length; i++) { parameters.push(args[i]); } } fn = (typeof fn =
function parse(fn, args)
{
var parameters = [];
if (args)
{
for (var i = 0; i < args.length; i++)
{
parameters.push(args[i]);
}
}
fn = (typeof fn == "function") ? fn : window[fn];
return fn.apply(this, parameters);
}
function SomeFunction(parameters)
{
console.log(parameters);
}
函数解析(fn,args)
{
var参数=[];
如果(args)
{
对于(变量i=0;i
这在某种程度上是有效的,因为调用了正确的函数并将参数传递给它。但是,我只接收函数中数组的第一个元素,这显然是我遇到的问题,因为我需要数组的所有元素,而不仅仅是第一个元素。使用。
(rest运算符)对于解析
参数,将简化并正确传递数组
函数解析(fn,…参数){
fn=typeof fn==“函数”?fn:window[fn];
返回fn.apply(此参数);
}
函数(参数){
console.log(参数);
}
解析(SomeFunction[1,2])代码>请求添加一个示例用法函数SomeFunction(…参数)
可以工作,但您正在反向操作。当您希望第一个参数是数组时,为什么要应用
?当您期望一个参数是数组时,为什么不调用(this,parameters)
?另外,for循环对于let parameters=Array.from(args)来说相当冗长代码>someFunction
只有一个参数。使用apply()
时,每个数组元素都成为一个单独的参数。因此,第一个数组元素填充单个参数
变量。无需for
循环将参数
复制到参数
。您只需执行var parameters=args | |[]代码>我仍然在学习javascript,多年来一直是后端架构师,所以我是通过帖子和其他人的例子来完成这项工作的。。更改解析函数似乎奏效了。谢谢