[英]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.