我想调用一个函数使用数组作为参数:
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 callMe(...arr){ //valid arguments
alert(arr);
}
function callMe(name, ...arr){ //valid arguments
alert(arr);
}
function callMe(...arr, name){ //invalid arguments
alert(arr);
}
如果你需要传递一个数组作为起始参数,你可以这样做:
function callMe(arr, name){
let newArr = [...arr];
alert(newArr);
}
其他回答
你可以在更基本的形式中使用展开运算符
[].concat(...array)
对于返回数组但希望作为参数传递的函数
例子:
function expectArguments(...args){
return [].concat(...args);
}
JSON.stringify(expectArguments(1,2,3)) === JSON.stringify(expectArguments([1,2,3]))
在ES6标准中有一个新的扩展运算符…这就是它的作用。
call_me(...x)
除IE外,所有主流浏览器都支持。
展开操作符可以做许多其他有用的事情,链接的文档在这方面做得非常好。
正如@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'
}
在使用展开运算符时,必须注意它必须是传递的最后一个或唯一一个参数。否则就会失败。
function callMe(...arr){ //valid arguments
alert(arr);
}
function callMe(name, ...arr){ //valid arguments
alert(arr);
}
function callMe(...arr, name){ //invalid arguments
alert(arr);
}
如果你需要传递一个数组作为起始参数,你可以这样做:
function callMe(arr, name){
let newArr = [...arr];
alert(newArr);
}
您可以使用扩展语法
例如:
函数打印(…inpu) { console.log(…inpu) } Var arry = ['p0','p1','p2'] 打印(…进行)
链接如下:modzilla传播语法参考文档