Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Membina Fungsi dalam JavaScript yang Melaksanakan Sekali sahaja?
Cara Mencipta Fungsi dalam JavaScript yang Hanya Boleh Melaksanakan Sekali
JavaScript sememangnya tidak menawarkan cara untuk mencipta fungsi yang hanya boleh lari sekali. Walau bagaimanapun, terdapat penyelesaian yang elegan menggunakan penutupan dan perpustakaan pihak ketiga.
Kaedah Penutupan:
Penutupan mewujudkan skop peribadi yang boleh diakses oleh fungsi yang terkandung di dalamnya . Dalam skop ini, bendera boleh ditetapkan untuk menunjukkan sama ada fungsi telah dilaksanakan. Kod berikut menunjukkan pendekatan ini:
<code class="javascript">var something = (function() { var executed = false; return function() { if (!executed) { executed = true; // do something } }; })();</code>
Memanggil sesuatu() pada kali pertama memanggil fungsi dan set dilaksanakan kepada benar. Panggilan berikutnya tidak akan memberi kesan kerana dilaksanakan kekal benar.
Kaedah Perpustakaan Pihak Ketiga:
Perpustakaan seperti Underscore dan Ramda menyediakan fungsi sekali() yang membungkus yang dibekalkan fungsi dan memastikan ia berjalan sekali sahaja.
<code class="javascript">// Using Underscore var one_something = _.once(something); // Using Ramda const one_something = R.once(something);</code>
Fungsi yang dikembalikan boleh dipanggil beberapa kali, tetapi fungsi asas hanya akan dijalankan kali pertama.
Utiliti untuk Mencipta Satu -Fungsi Masa:
Jika anda tidak menggunakan perpustakaan, anda boleh mencipta fungsi utiliti tersuai. Satu pendekatan ialah:
<code class="javascript">function once(fn, context) { var result; return function() { if (fn) { result = fn.apply(context || this, arguments); fn = null; } return result; }; }</code>
Fungsi ini menerima fungsi dan secara pilihan konteks. Ia mengembalikan fungsi yang melaksanakan fungsi asal pada panggilan pertama dan mengembalikan hasilnya. Panggilan seterusnya tiada kesan.
Atas ialah kandungan terperinci Bagaimana untuk Membina Fungsi dalam JavaScript yang Melaksanakan Sekali sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!