1.闭包实现。
1<script> 2 window.onload = function () { 3 4 5 function once(fn) { 6 var result; 7 8 return function() { 9 if(fn) { 10 result = fn.apply(this, arguments); 11 fn = null; 12 } 13 return result; 14 }; 15 } 16 17 var callOnce = once(function() { 18 console.log('javascript'); 19 }); 20 21 callOnce(); // javascript 22 callOnce(); // null 23 } 24 </script>
2.第一次调用后,把func函数值空。func= function(){};
1<script> 2 var func = function () { 3 alert("正常调用"); 4 func= function(){}; 5 } 6 func(); 7 func(); 8 </script>
3.设置一个值,通过boolean来控制后面的调用。flag
1<script> 2 window.onload = function () { 3 var condition = true; 4 5 function once() { 6 if (condition) { 7 alert("我被调用"); 8 condition = false; 9 } else { 10 return; 11 } 12 } 13 once(); 14 once(); 15 } 16 </script>