簡體   English   中英

如果我們想保留currying的值,javascript的閉包如何工作

[英]how does javascript's closure work if we want to preserve a value in currying

我已經寫了代碼

// Handlers
function successHandlerFactory (savedFlag) {

  return function (res, savedFlag){
    if (res.data && res.status == 200) {
      ngcoupon_offerManager.addOffers(res.data.offers, -1, savedFlag);
      console.log('offers response', res, 'savedFlag', savedFlag);
    } else {
      console.error('something is wrong to get offers', res);
    }
  }
};

var offerSuccessHandler = function() {
    return successHandlerFactory();
}();
var savedofferSuccessHandler = function () {
  return successHandlerFactory(true);
}();

但顯然,它給出的savedFlag undefined我執行的每個執行。

為什么這不起作用

問題在代碼的這一部分中:

function successHandlerFactory (savedFlag) {
  return function (res, savedFlag){
    ...

您在內部函數中重新聲明了savedFlag ,最終它是成功處理程序中捕獲的變量。 嘗試簡單地刪除返回函數的第二個參數。

暫無
暫無

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

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