js只執(zhí)行1次的函數示例
更新時間:2016年07月20日 11:38:39 投稿:daisy
本文通過代碼示例給大家展示了如何讓javascript只執(zhí)行一次,如何實現這種功能呢?通過下面這段就可以輕松搞定了。
在我們日常開發(fā)的時候,經常會碰到一種這樣的情況:想讓某個函數只執(zhí)行一次,特別是在一些循環(huán)或定時執(zhí)行的時候。
廢話不多說,直接上代碼:
function runOnce(fn, context) { //控制讓函數只觸發(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
因為返回函數執(zhí)行一次后,fn = null將其設置未null,所以后面就不會執(zhí)行了。再貼一個網上別人分享的代碼,道理一樣的:
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í)行一次的函數示例,有需要的可以參考。
您可能感興趣的文章:
- 淺談JavaScript中運算符的優(yōu)先級
- js 與或運算符 || && 妙用
- javascript typeof的用法與typeof運算符介紹[詳細]
- JS中三目運算符和if else的區(qū)別分析與示例
- js的邏輯運算符 ||
- Javascript 按位取反運算符 (~)
- javascript三元運算符用法實例
- js利用與或運算符優(yōu)先級實現if else條件判斷表達式
- JavaScript中常用的運算符小結
- js定時器(執(zhí)行一次、重復執(zhí)行)
- js 程序執(zhí)行與順序實現詳解
- 如何讓頁面加載完成后執(zhí)行js
- 頁面加載完后自動執(zhí)行一個方法的js代碼
- js函數setTimeout延遲執(zhí)行的簡單介紹
- 頁面加載完成后再執(zhí)行JS的jquery寫法以及區(qū)別說明
- window.addEventListener來解決讓一個js事件執(zhí)行多個函數
- js 把字符串當函數執(zhí)行的方法
- Js中setTimeout()和setInterval() 何時被調用執(zhí)行的用法
- JS實現判斷滾動條滾到頁面底部并執(zhí)行事件的方法
相關文章
open 動態(tài)修改img的onclick事件示例代碼
動態(tài)修改img的onclick事件,使用open也可輕松做到,下面有個不錯的示例,需要的朋友可以參考下2013-11-11
Bootstrap modal 多彈窗之疊加顯示不出彈窗問題的解決方案
Bootstrap modal 多彈窗之疊加顯示不出彈窗問題,今天小編抽時間給大家分享下解決方案,需要的朋友參考下2017-02-02

