繁体   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