js只执行1次的函数示例
在我们日常开发的时候,经常会碰到一种这样的情况:想让某个函数只执行一次,特别是在一些循环或定时执行的时候。
废话不多说,直接上代码:
functionrunOnce(fn,context){//控制让函数只触发一次 returnfunction(){ try{ fn.apply(context||this,arguments); } catch(e){ console.error(e);//一般可以注释掉这行 } finally{ fn=null; } } } //Usage1: vara=0; varcanOnlyFireOnce=runOnce(function(){ a++; console.log(a); }); canOnlyFireOnce();//1 canOnlyFireOnce();//nothing canOnlyFireOnce();//nothing //Usage2: varname="张三"; varcanOnlyFireOnce=runOnce(function(){ console.log("你好"+this.name); }); canOnlyFireOnce();//你好张三 canOnlyFireOnce();//nothing //Usage3: varobj={name:"天涯孤雁",age:24}; varcanOnlyFireOnce=runOnce(function(){ console.log("你好"+this.name); },obj); canOnlyFireOnce();//你好天涯孤雁 canOnlyFireOnce();//nothing
因为返回函数执行一次后,fn=null将其设置未null,所以后面就不会执行了。再贴一个网上别人分享的代码,道理一样的:
functiononce(fn,context){ varresult; returnfunction(){ if(fn){ result=fn.apply(context||this,arguments); fn=null; } returnresult; }; } //Usage varcanOnlyFireOnce=once(function(){ console.log('Fired!'); }); canOnlyFireOnce();//"Fired!" canOnlyFireOnce();//nothing
以上就是为大家整理让javascript只执行一次的函数示例,有需要的可以参考。