簡體   English   中英

在Javascript中傳遞命名函數

[英]Passing a named function in Javascript

如何在不調用參數的情況下傳遞帶參數的命名函數。

現在我唯一的解決方案似乎是一個黑客,但它是傳遞一個未命名的函數,它將調用命名函數。

callback(function(){foo(params);})

有沒有更好的方法呢?

不,有幾種方法可以做到,但你擁有它的方式是最受歡迎的。 我知道它感覺很亂,但就是這樣。

你也可以這樣做

callback(foo.bind(this, params));

你現在擁有的代碼,它將調用包裝在另一個匿名函數中是完全正常的,並且是Javascript中廣泛使用的模式。

如果要刪除匿名函數,可以使用bind()方法對函數的引用。 試試這個:

callback(foo.bind(this, params));

bind()文檔

您也可以只傳遞該函數並使用Javascript apply / call函數

callback(myFunc);

其中回調定義為:

function callback(func, params) {
    func.apply(null, params);
}

有關更多詳細信息,請參閱MDN Here中的Apply方法文檔

您的函數應分配給范圍變量。 您可以使用該變量傳入它。

var func = function(){ foo(params); }
callback(func);

如果你只是想直接調用foo,那就把它傳入。

callback(foo);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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