
今天,我閱讀了Mark Needham的一篇很棒的博客文章,標題為JavaScript:混淆“呼叫”和“ apply”
。不久前,我為我們的 Tech Times
>新聞通訊寫了一篇文章,內容涉及JavaScript參數對象。它被稱為參數:javascript奇怪。因為它具有有用的各種有趣的行為。我意識到,儘管我同時使用併申請了
在那篇文章中,我沒有談論過差異。
好吧,這實際上很簡單。首先,這兩種方法都期望這是第一個參數。這是賦予該函數上下文的論點。它確定JavaScript關鍵字的值此在所調用或應用的函數中。單一的區別在於,呼叫方法要求分別指定參數。應用方法將它們作為數組。如果您看到語法:很清楚:
function.call(thisArg[, argument1[, argument2[, ...]]]);
登入後複製
因此,如果您正在使用JavaScript中的參數對象,則可以使用應用方法調用任何函數,然後只需將現有參數對像作為數組參數傳遞。
希望這對您有用!
function.apply(thisArg[, argumentArray]);
登入後複製
sudhamshu的功能圖像。你能弄清楚意義嗎?
>
>在JavaScript中適用於功能調用和功能的常見問題(常見問題解答)
>在JavaScript中應用函數呼叫和函數之間的主要區別是什麼?使用call()方法,您單獨通過參數,被逗號分隔。另一方面,應用()方法要求將參數作為數組傳遞。這兩種方法都允許您控制功能中“ this”的值,但是您傳遞其他參數的方式不同。
您可以提供使用函數呼叫和函數應用的示例嗎?
>
>當然,讓我們考慮一個簡單的函數來添加兩個數字。使用call()方法,您將執行類似的操作:
函數add(a,b){
返回a b;
}
console.log(add.call(add.call(null,1,2)); //輸出:3
並使用apply()方法,它看起來像這樣:函數add(a,b){
返回a b;
}
}
console.log(add.apply(null,[1,2])); //輸出:3
在兩種情況下,我們都將添加函數調用為null的“ this”設置(因為它在此函數中不使用),並以1和2作為參數傳遞。>我何時應該使用函數呼叫而不是函數應用,反之亦然?
> call()和apply()和apply()之間的選擇取決於您要如何將參數傳遞給該函數。如果您有一個參數列表,並且您不提前知道其號碼,則Apply()可能會更方便,因為它需要數組。如果您知道參數的數量,或者根本沒有參數,則可以更簡單地使用call()。但是,在使用Apply()與期望多個參數的構造函數函數一起使用時,您需要小心。由於Apply()需要一個參數,因此您需要確保數組包含正確數量的元素。
>>在函數呼叫和函數應用中應用的“此”值是什麼?這使您可以控制執行函數的上下文。如果您將null或不確定為第一個參數,則該函數將在全局上下文中執行(或在嚴格模式下未定義)。
> 我可以使用函數呼叫和函數與箭頭函數應用嗎?
,而您可以從技術上使用call()使用call()和箭頭函數應用()對Arrow函數進行應用,請注意,該函數不是他們本身的'''''''''''''''''''’值。取而代之的是,他們從周圍的範圍繼承了“此”。因此,使用call()或apply()更改箭頭函數的“此”值無效。 >
>函數呼叫和函數之間的性能差異是什麼?但是,如果您要處理一個需要大量參數的函數,則apply()可能會稍慢,因為它需要在各種參數上迭代。
我可以使用內置的javascript函數使用函數呼叫和函數嗎?
是的,是的,您可以使用call()和內置的javascript functions使用call()和應用程序。當您想使用具有不同類型的對像上的一個對像類型上存在的方法時,這可能是有用的。 >
>如果我通過太多或太少的參數來函數呼叫或函數應用程序會發生什麼? >
如果您傳遞了太多參數以呼叫()或應用(),那麼額外的參數將被簡單地忽略。如果您的參數太少,則缺少參數將設置為未定義。 >
是在所有JavaScript環境中使用的函數呼叫和函數應用方法嗎?
以上是function.call和function.ply的差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!