簡體   English   中英

為什么我不能調用function.apply?

[英]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)
}

我可以同時使用callapply來調用此函數

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM