Javascript 为什么我不能调用函数.apply?

Javascript 为什么我不能调用函数.apply?,javascript,Javascript,这与这个问题有关: 我假设给定这行代码: Promise.all(array).then(foo) Promise.all使用Function.call,调用foo foo.call(foo, arrayValues) 我想将foo修改为foo.apply函数,这样用一个值数组调用它会将其拆分为常规参数 这是我的思路 假设我有这个函数 function test(a,b,c){ console.log(a,b,c) } 我可以使用call和apply test.call(null

这与这个问题有关:

我假设给定这行代码:

Promise.all(array).then(foo)
Promise.all
使用
Function.call
,调用
foo

foo.call(foo, arrayValues)
我想将
foo
修改为
foo.apply
函数,这样用一个值数组调用它会将其拆分为常规参数

这是我的思路

假设我有这个函数

function test(a,b,c){
    console.log(a,b,c)
}
我可以使用
call
apply

test.call(null,1,2,3)
>> 1 2 3
test.apply(null,[1,2,3])
>> 1 2 3
到目前为止还不错,这也很有效

test.call.apply(test,[null,1,2,3])
>> 1 2 3
然而,我不能让它工作

test.apply.call(test,[null,1,2,3])
>> undefined undefined undefined
这里发生了什么事?

我让它工作起来了

test.apply.call(test,null,[1,2,3])
>> 1 2 3
等于

test.apply([null,1,2,3])
test()
test.apply(null,[1,2,3])
test(1,2,3)
等于

test.apply([null,1,2,3])
test()
test.apply(null,[1,2,3])
test(1,2,3)
所以您没有定义为输出


等于

test.apply([null,1,2,3])
test()
test.apply(null,[1,2,3])
test(1,2,3)
等于

test.apply([null,1,2,3])
test()
test.apply(null,[1,2,3])
test(1,2,3)

这是对的。

所以。。。相关性?你成功了,但没有解释“这里发生了什么?”