Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让JavaScript访问';展开';参数数量可变?_Javascript - Fatal编程技术网

如何让JavaScript访问';展开';参数数量可变?

如何让JavaScript访问';展开';参数数量可变?,javascript,Javascript,例如,假设我有以下两个函数 function a(param1) { console.log(param1); } function b(func, params) { func(params); } 然后 按预期打印“1” 现在假设我有一个附加函数 function c(param1, param2) { console.log(param1, param2); } 有没有类似的方法 b(a, 1); 除了两个参数?类似于下面的内容 b(c, [2, 3]);

例如,假设我有以下两个函数

function a(param1) {
    console.log(param1);
}

function b(func, params) {
    func(params);
}
然后

按预期打印“1”

现在假设我有一个附加函数

function c(param1, param2) {
    console.log(param1, param2);
}
有没有类似的方法

b(a, 1);
除了两个参数?类似于下面的内容

b(c, [2, 3]);

当[2,3]array展开为单个参数时

您要使用函数的
apply
方法。因此,在
b
中,使用
func.apply(这个,参数)
而不仅仅是
func(参数)

apply
的第一个参数是设置该
的对象;第二个参数是要传递给函数的参数数组

因此类似于
b.foo(1,2,3)
的东西与
foo.apply(b[1,2,3])
的东西是一样的,假设
b.foo=foo

类似这样的东西:

function b(func) {
    func.apply(null, [].slice.call(arguments, 1));
}
function b(func) {
    func.apply(null, [].slice.call(arguments, 1));
}