functionfn(){console.log("xxx");}functiononce(fn){}once(fn);//xxxonce(fn);//没了
2 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
刚开始以为楼主需要的是这个一个只执行一次的函数functiononce(func){varran,result;if(!isFunction(func)){thrownewTypeError(funcErrorText);}returnfunction(){if(ran){returnresult;}ran=true;result=func.apply(this,arguments);//clearthe`func`variablesothefunctionmaybegarbagecollectedfunc=null;returnresult;};}functiontest(){alert('coinxu')}varnewTest=once(test)newTest()newTest()copyfromlodash.once不过还是给出你的答案functiontest(){alert('coinxu')}varonce=(function(){varmemo={},i=0;returnfunction(fn){for(varkeyinmemo){//匿名函数支持if(memo[key].func===fn||memo[key].func.toString()===fn.toString()){returnmemo[key].result}}i+=1varresult=fn()memo[i]={func:fn,result:result}returnresult}})()once(test)once(test)
添加回答
举报
0/150
提交
取消