Rumah > hujung hadapan web > tutorial js > Mengapa Gunakan `var that = this;` dalam JavaScript Nested Functions?

Mengapa Gunakan `var that = this;` dalam JavaScript Nested Functions?

Barbara Streisand
Lepaskan: 2024-12-02 10:51:11
asal
274 orang telah melayarinya

Why Use `var that = this;` in JavaScript Nested Functions?

Apakah 'var that = this;' Syntax Accomplish dalam JavaScript?

Dalam JavaScript, adalah perkara biasa untuk menemui blok kod yang serupa dengan yang berikut:

function Somefunction(){
   var that = this; 
   ... 
}
Salin selepas log masuk

Sintaks ini memberikan nilai ini kepada pembolehubah bernama itu . Tujuan simpulan bahasa ini adalah untuk mengekalkan rujukan kepada konteks ini yang betul dalam fungsi bersarang.

Untuk menggambarkan keperluan untuk itu, pertimbangkan contoh berikut:

var colours = ['red', 'green', 'blue'];
document.getElementById('element').addEventListener('click', function() {
    // this is a reference to the element clicked on

    var that = this;

    colours.forEach(function() {
        // this is undefined
        // that is a reference to the element clicked on
    });
});
Salin selepas log masuk

Dalam fungsi tanpa nama diserahkan kepada forEach, kata kunci ini tidak lagi merujuk kepada elemen yang diklik kerana skopnya telah berubah. Menetapkan ini untuk itu membolehkan kami mengekalkan rujukan yang diingini dalam fungsi bersarang.

$('#element').click(function(){
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function(){
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    });
});
Salin selepas log masuk

Dalam amalan, adalah berfaedah untuk menggunakan alias yang lebih deskriptif untuk ini untuk meningkatkan kebolehbacaan kod. Sebagai contoh, dalam contoh di atas, clickedEl akan menjadi pilihan yang lebih sesuai.

Atas ialah kandungan terperinci Mengapa Gunakan `var that = this;` dalam JavaScript Nested Functions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan