js只執(zhí)行1次的函數(shù)示例
更新時間:2016年07月20日 11:38:39 投稿:daisy
本文通過代碼示例給大家展示了如何讓javascript只執(zhí)行一次,如何實現(xiàn)這種功能呢?通過下面這段就可以輕松搞定了。
在我們?nèi)粘i_發(fā)的時候,經(jīng)常會碰到一種這樣的情況:想讓某個函數(shù)只執(zhí)行一次,特別是在一些循環(huán)或定時執(zhí)行的時候。
廢話不多說,直接上代碼:
function runOnce(fn, context) { //控制讓函數(shù)只觸發(fā)一次
return function () {
try {
fn.apply(context || this, arguments);
}
catch (e) {
console.error(e);//一般可以注釋掉這行
}
finally {
fn = null;
}
}
}
// Usage 1:
var a = 0;
var canOnlyFireOnce = runOnce(function () {
a++;
console.log(a);
});
canOnlyFireOnce(); //1
canOnlyFireOnce(); // nothing
canOnlyFireOnce(); // nothing
// Usage 2:
var name = "張三";
var canOnlyFireOnce = runOnce(function () {
console.log("你好" + this.name);
});
canOnlyFireOnce(); //你好張三
canOnlyFireOnce(); // nothing
// Usage 3:
var obj = {name: "天涯孤雁", age: 24};
var canOnlyFireOnce = runOnce(function () {
console.log("你好" + this.name);
}, obj);
canOnlyFireOnce(); //你好天涯孤雁
canOnlyFireOnce(); // nothing
因為返回函數(shù)執(zhí)行一次后,fn = null將其設(shè)置未null,所以后面就不會執(zhí)行了。再貼一個網(wǎng)上別人分享的代碼,道理一樣的:
function once(fn, context) {
var result;
return function() {
if(fn) {
result = fn.apply(context || this, arguments);
fn = null;
}
return result;
};
}
// Usage
var canOnlyFireOnce = once(function() {
console.log('Fired!');
});
canOnlyFireOnce(); // "Fired!"
canOnlyFireOnce(); // nothing
以上就是為大家整理讓javascript只執(zhí)行一次的函數(shù)示例,有需要的可以參考。
您可能感興趣的文章:
- 淺談JavaScript中運算符的優(yōu)先級
- js 與或運算符 || && 妙用
- javascript typeof的用法與typeof運算符介紹[詳細]
- JS中三目運算符和if else的區(qū)別分析與示例
- js的邏輯運算符 ||
- Javascript 按位取反運算符 (~)
- javascript三元運算符用法實例
- js利用與或運算符優(yōu)先級實現(xiàn)if else條件判斷表達式
- JavaScript中常用的運算符小結(jié)
- js定時器(執(zhí)行一次、重復(fù)執(zhí)行)
- js 程序執(zhí)行與順序?qū)崿F(xiàn)詳解
- 如何讓頁面加載完成后執(zhí)行js
- 頁面加載完后自動執(zhí)行一個方法的js代碼
- js函數(shù)setTimeout延遲執(zhí)行的簡單介紹
- 頁面加載完成后再執(zhí)行JS的jquery寫法以及區(qū)別說明
- window.addEventListener來解決讓一個js事件執(zhí)行多個函數(shù)
- js 把字符串當(dāng)函數(shù)執(zhí)行的方法
- Js中setTimeout()和setInterval() 何時被調(diào)用執(zhí)行的用法
- JS實現(xiàn)判斷滾動條滾到頁面底部并執(zhí)行事件的方法
相關(guān)文章
layer.alert回調(diào)函數(shù)執(zhí)行關(guān)閉彈窗的實例
今天小編就為大家分享一篇layer.alert回調(diào)函數(shù)執(zhí)行關(guān)閉彈窗的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
javascript實例--教你實現(xiàn)撲克牌洗牌功能
我們一般都會按照順序把隨機摸過來的牌從小到大的順序在手上理整齊(記得小時候打牌兩副牌手都抓不過來),這篇隨筆就是想通過實現(xiàn)這個功能來熟悉下js中排序數(shù)組等相關(guān)知識。2014-05-05
詳解如何通過JavaScript實現(xiàn)函數(shù)重載
這篇文章主要為大家詳細介紹了如何通過JavaScript實現(xiàn)函數(shù)重載,文中的示例代碼講解詳細,對我們學(xué)習(xí)JavaScript有一定的幫助,感興趣的可以了解一下2023-01-01

