js函数只触发一次
如何让js中的函数只被执行一次?我们有时候会有这种需求,即让一个函数只执行一次,第二次调用不会返回任何有价值的值,也不会报错。下面将通过三个小demo展示使用的方法,当做个人笔记。
1.通过闭包来实现。
<script> window.onload = function () { function once(fn) { var result; return function() { if(fn) { result = fn.apply(this, arguments); fn = null; } return result; }; } var callOnce = once(function() { console.log('javascript'); }); callOnce(); // javascript callOnce(); // null } </script>
2.第一次调用后,把func函数值空。func= function(){};
<script> var func = function () { alert("正常调用"); func= function(){}; } func(); func(); </script>
3.设置一个值,通过boolean来控制后面的调用。flag
<script> window.onload = function () { var flag = true; function once() { if (flag) { alert("我被调用"); flag = false; } else { return; } } once(); once(); } </script>