Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Saya Boleh Mencipta Fungsi Yang Melaksanakan Sekali sahaja dalam JavaScript?

Bagaimanakah Saya Boleh Mencipta Fungsi Yang Melaksanakan Sekali sahaja dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-22 22:55:02555semak imbas

How Can I Create Functions That Execute Only Once in JavaScript?

Tinjauan Mendalam pada Fungsi Perlaksanaan Tunggal dalam JavaScript

Keperluan biasa dalam pengaturcaraan melibatkan penciptaan fungsi yang hanya boleh dilaksanakan sekali . Semasa menggunakan pembolehubah statik dalam bahasa seperti C dan Java mungkin terlintas di fikiran, JavaScript menawarkan alternatif yang elegan: penutupan.

Memahami Penutupan

Penutupan dalam JavaScript ialah fungsi yang mempunyai akses kepada skop fungsi induk mereka, walaupun selepas fungsi induk telah kembali. Dengan menggunakan penutupan, kita boleh mencipta fungsi yang menjejaki sama ada ia telah dilaksanakan sebelum ini.

Pertimbangkan contoh berikut:

<code class="javascript">var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            // Do something
        }
    };
})();

something(); // "Do something" happens
something(); // Nothing happens</code>

Dalam contoh ini, fungsi luar mencipta penutupan sekitar fungsi dalaman. Fungsi dalaman menyemak sama ada bendera yang dilaksanakan ditetapkan kepada palsu, menunjukkan bahawa ia tidak dijalankan sebelum ini. Jika palsu, bendera ditetapkan kepada benar, dan tindakan yang diingini dilaksanakan. Pada panggilan berikutnya, bendera yang dilaksanakan kekal benar, menyebabkan fungsi tidak melakukan apa-apa.

Fungsi Perpustakaan Pihak Ketiga

Pelbagai pustaka JavaScript pihak ketiga, seperti Underscore dan Ramda, menyediakan fungsi utiliti seperti once(). Fungsi ini menerima fungsi lain sebagai hujah dan mengembalikan fungsi yang melaksanakan fungsi yang dibekalkan tepat sekali. Fungsi yang dikembalikan juga menyimpan cache nilai daripada pelaksanaan pertama dan mengembalikannya pada panggilan berikutnya.

Satu pelaksanaan ketara disediakan oleh David Walsh:

<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 mewujudkan penutupan di sekeliling yang dibekalkan fungsi (fn) dan konteks (konteks). Pada pelaksanaan pertama, ia menetapkan hasil kepada nilai pulangan fn dan menetapkan fn kepada null, dengan berkesan menghalang pelaksanaan masa hadapan. Pada panggilan berikutnya, ia hanya mengembalikan hasil cache.

Penggunaan

Menggunakan fungsi satu pelaksanaan ini adalah mudah. Hanya hantar fungsi yang anda ingin laksanakan sekali kepada fungsi utiliti dan fungsi yang dikembalikan boleh dipanggil mengikut keperluan tanpa sebarang kebimbangan tentang pelaksanaan semula.

Sebagai contoh, dengan pelaksanaan David Walsh:

<code class="javascript">function something() { /* Do something */ }
var one_something = once(something);

one_something(); // "Do something" happens
one_something(); // Nothing happens</code>

Kesimpulan

Penutupan dan fungsi utiliti menyediakan cara yang elegan untuk mencipta fungsi satu pelaksanaan dalam JavaScript. Dengan memahami dan menggunakan teknik ini, anda boleh mengendalikan situasi di mana fungsi tertentu harus dilaksanakan sekali sahaja.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Fungsi Yang Melaksanakan Sekali sahaja dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn