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