我想调用一个函数使用数组作为参数:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it
function call_me (param0, param1, param2 ) {
// ...
}
是否有更好的方法将x的内容传递给call_me()?
我想调用一个函数使用数组作为参数:
const x = ['p0', 'p1', 'p2'];
call_me(x[0], x[1], x[2]); // I don't like it
function call_me (param0, param1, param2 ) {
// ...
}
是否有更好的方法将x的内容传递给call_me()?
当前回答
注意这
function FollowMouse() {
for(var i=0; i< arguments.length; i++) {
arguments[i].style.top = event.clientY+"px";
arguments[i].style.left = event.clientX+"px";
}
};
//---------------------------
html页面
<body onmousemove="FollowMouse(d1,d2,d3)">
<p><div id="d1" style="position: absolute;">Follow1</div></p>
<div id="d2" style="position: absolute;"><p>Follow2</p></div>
<div id="d3" style="position: absolute;"><p>Follow3</p></div>
</body>
可以调用函数与任何参数
<body onmousemove="FollowMouse(d1,d2)">
or
<body onmousemove="FollowMouse(d1)">
其他回答
假设call_me是一个全局函数,因此不需要设置此值。
var x = ['p0', 'p1', 'p2'];
call_me.apply(null, x);
正如@KaptajnKold回答的那样
var x = [ 'p0', 'p1', 'p2' ];
call_me.apply(this, x);
你也不需要为call_me函数定义每个参数。 你可以用参数
function call_me () {
// arguments is a array consisting of params.
// arguments[0] == 'p0',
// arguments[1] == 'p1',
// arguments[2] == 'p2'
}
使用JSON而不是数组有更好的方法!
// Call a function with a Json Key / Value Pair:
sendMail({param1: p1, param2: p2});
// Function definition and usage of value pairs:
function sendMail(data){
var parameter1 = data.param1;
var parameter2 = data.param2;
}
const args = ['p0', 'p1', 'p2'];
call_me.apply(this, args);
请参阅MDN文档中的Function.prototype.apply()。
如果环境支持ECMAScript 6,你可以使用spread参数:
call_me(...args);
您可以使用扩展语法
例如:
函数打印(…inpu) { console.log(…inpu) } Var arry = ['p0','p1','p2'] 打印(…进行)
链接如下:modzilla传播语法参考文档