如何讓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>