Dalam pengembangan harian kita, kita sering menghadapi situasi di mana kita ingin membuat fungsi hanya dieksekusi sekali, terutama ketika beberapa loop atau eksekusi waktunya.
Tanpa basa -basi lagi, cukup unggah kode:
function runonce (fn, konteks) {// Kontrol fungsi untuk memicu fungsi pengembalian () {coba {fn.Apply (konteks || ini, argumen); } catch (e) {console.error (e); // umumnya Anda dapat mengomentari baris ini} akhirnya {fn = null; }}} // Penggunaan 1: var a = 0; var canonlyfireonce = runonce (function () {a ++; console.log (a);}); canonlyfireonce (); // 1canOnlyfireonce (); // tidak ada canonlyfireonce (); // Tidak ada // Penggunaan 2: var name = "zhang san"; var canonlyfireonce = runonce (function () {console.log ("hello" + this.name);}); canonOnlyfireonce (); // Halo Zhang San Canonlyfireonce (); // tidak ada // penggunaan 3: var obj = {name: "angsa kesepian dari dunia", usia: 24}; var canonlyfireonce = runonce (function () {console.log ("hello" + this.name);}, obj); canOnlyFireOnce (); // halo, tianya, canonlyfireonce (); // Tidak ada apa-apaKarena setelah fungsi pengembalian dieksekusi sekali, Fn = NULL menetapkannya tidak nol, jadi itu tidak akan dieksekusi nanti. Posting kode lain yang dibagikan oleh orang lain secara online, prinsipnya sama:
fungsi sekali (fn, konteks) {var hasil; return function () {if (fn) {result = fn.Apply (konteks || ini, argumen); fn = null; } hasil pengembalian; };} // usagevar canonlyfireonce = sekali (function () {console.log ('dipecat!');}); canonlyfireonce (); // "Dipecat!" canonlyfireonce (); // Tidak ada apa-apaDi atas adalah kumpulan contoh fungsi untuk Anda biarkan JavaScript hanya mengeksekusi sekali saja. Jika Anda membutuhkannya, Anda dapat merujuknya.