为了账号安全,请及时绑定邮箱和手机立即绑定

看《js设计模式》时,发现个问题...

看《js设计模式》时,发现个问题...

慕斯709654 2018-09-04 13:25:28
我看这里的时候 感觉有个很奇怪的地方:var getSingle = function( fn ){    var result;    return function(){         return result || ( result = fn .apply(this, arguments ) );     } };在调用 getSingle的时候,每次调用 都会重新声明一个 var result 变量啊, 所以每次 result 都是个新的 空 呀,那后面的判断 就没意义了!!!是不是漏了个立即执行(function(){})() 来包裹一下呀?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

嗯 这书我也看过 《JavaScript设计模式与开发实践》,单例模式那块儿。

其实这是一个闭包的问题

你看这一行

var createSingleLoginLayer = getSingle(createLoginLayer)

返回的这个 createSingleLoginLayer 函数始终引用了 result 变量。

因此假设 无论是 createSingleLoginLayer(args1) 还是 createSingleLoginLayer(args2) 其实result 变量从来都是那个一开始那个 result .每次 result 不是空的。

说到底,这就是个闭包的问题。


查看完整回答
反对 回复 2018-10-19
  • 1 回答
  • 0 关注
  • 537 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号