JavaScript:将逗号分隔的参数字符串发送到javascript函数

azh*_*ati 3 javascript

我在javascript中有一个函数

function add(v1,v2){

var add=v1+v2;

}
Run Code Online (Sandbox Code Playgroud)

现在我调用此函数如下 -

write.out(var param="1,2";);

write.out(window[add](param););
Run Code Online (Sandbox Code Playgroud)

使用上面的调用,它不起作用.它的作用是将完整的字符串"1,2"作为函数的第一个参数(v1)的值.

如果我按以下方式调用该函数,它的工作原理 -

write.out(var param1="1";);

write.out(var param2="2";);

write.out(window[add](param1,param2););
Run Code Online (Sandbox Code Playgroud)

我想用第一种方式实现它,我可以将参数作为逗号分隔的参数字符串发送.

有人可以帮我解决这个问题吗?

谢谢!!!

jAn*_*ndy 8

您可以使用ECMA脚本.apply(),它调用函数并接受一组参数.

window['add'].apply(null, param.split(','));
Run Code Online (Sandbox Code Playgroud)

这样,我们执行add函数,将其上下文设置为null(如果需要,也可以更改)并传入两个参数.既然我们需要一个Array,我们split()之前调用字符串.

所以基本上,上面的行是一样的

add(1,2);
Run Code Online (Sandbox Code Playgroud)

由于你在全局context(window)中拥有该函数,我们甚至不需要明确地编写它.

add.apply(null, param.split(','));
Run Code Online (Sandbox Code Playgroud)

会没事的.