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