我想使用数组作为参数调用函数:
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
into的内容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
into的内容call_me()
?
const args = ['p0', 'p1', 'p2'];
call_me.apply(this, args);
参见 MDN 文档Function.prototype.apply()
。
如果环境支持 ECMAScript 6,您可以使用spread 参数代替:
call_me(...args);
为什么不传递整个数组并在函数内部根据需要处理它?
var x = [ 'p0', 'p1', 'p2' ];
call_me(x);
function call_me(params) {
for (i=0; i<params.length; i++) {
alert(params[i])
}
}
在 ES6 标准中,有一个新的扩展运算符 ...
可以做到这一点。
call_me(...x)
除 IE 外,所有主流浏览器都支持它。
展开运算符可以做许多其他有用的事情,链接文档在展示这一点方面做得非常好。
假设 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 函数定义每个参数。你可以使用arguments
function call_me () {
// arguments is a array consisting of params.
// arguments[0] == 'p0',
// arguments[1] == 'p1',
// arguments[2] == 'p2'
}