我在javascript中有一个函数
function add(v1,v2){
var add=v1+v2;
}
现在我调用此函数如下 -
write.out(var param="1,2";);
write.out(window[add](param););
使用上述电话,它无效。它的作用是提供完整的字符串" 1,2"作为函数的第一个参数(v1)的值。
如果我按以下方式调用函数,它的工作原理 -
write.out(var param1="1";);
write.out(var param2="2";);
write.out(window[add](param1,param2););
我想使用第一种方式实现它,我可以将参数作为逗号分隔的参数字符串发送。
有人可以帮我解决这个问题吗?
感谢!!!
答案 0 :(得分:8)
您可以使用ECMA脚本.apply()
,它会调用一个函数并接受一组参数。
window['add'].apply(null, param.split(','));
这样,我们执行add
函数,将其上下文设置为null
(如果需要,您也可以更改它)并传入两个参数。由于我们需要Array
,因此我们会先在字符串上调用split()
。
基本上,上面的行与
相同add(1,2);
由于您在全局上下文(window
)中拥有该函数,我们甚至不需要明确地编写它。
add.apply(null, param.split(','));
会没事的。