[英]Why can I not call a function.apply?
這與以下問題有關: 是否可以將輸入數組擴展為參數?
我假設給出以下代碼:
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.call(test,[null,1,2,3])
等於
test.apply([null,1,2,3])
等於
test()
因此您未定義為輸出。
test.apply.call(test,null,[1,2,3])
等於
test.apply(null,[1,2,3])
等於
test(1,2,3)
這是對的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.