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

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

Linda Hamilton
Linda Hamiltonasal
2024-10-22 23:32:29682semak imbas

How Can I Create a Function in JavaScript That Executes Only Once?

Mencipta Fungsi dalam JavaScript Yang Boleh Laksana Sekali Sahaja

Dalam JavaScript, kadangkala perlu mengehadkan pelaksanaan fungsi kepada satu tika. Walaupun pembolehubah statik boleh mencapai ini dalam bahasa seperti C , JavaScript menawarkan penyelesaian yang lebih elegan melalui penutupan.

Penutupan, fungsi yang mengekalkan konteksnya walaupun selepas skop penutupnya telah tamat, membolehkan penciptaan fungsi yang hanya boleh dipanggil sekali sahaja. Dengan merangkum bendera pelaksanaan dalam penutupan, kami boleh memastikan bahawa ia kekal berterusan dan tidak boleh diakses oleh kod luaran.

Berikut ialah contoh penggunaan penutupan untuk mencipta fungsi boleh laku sekali:

<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>

Fungsi ini memastikan bahawa kod yang dilampirkan dalam penutupan hanya dilaksanakan sekali, walaupun terdapat seruan berikutnya.

Sebagai alternatif, jika anda lebih suka pendekatan yang lebih terkapsul, anda boleh menggunakan fungsi utiliti seperti di bawah:

<code class="javascript">function once(fn, context) { 
    var result;
    return function() { 
        if (fn) {
            result = fn.apply(context || this, arguments);
            fn = null;
            context = null;
        }
        return result;
    };
}</code>

Penggunaan:

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

one_something(); // "do something" happens
one_something(); // nothing happens</code>

Fungsi utiliti ini mengembalikan fungsi yang menyimpan cache hasil seruan pertama dan melumpuhkan pelaksanaan seterusnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Fungsi dalam JavaScript Yang Melaksanakan Sekali sahaja?. 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