Rumah >hujung hadapan web >tutorial js >Bagaimanakah Fungsi Anak Panah ES6 Mengendalikan Kata Kunci 'ini'?
Fungsi Anak Panah dan Pengikatan Leksikal "ini" dalam ES6
Salah satu ciri membezakan fungsi anak panah dalam ES6 ialah pengendaliannya yang unik daripada kata kunci "ini". Tidak seperti fungsi biasa, yang mengikat "ini" secara dinamik pada konteks pemanggilan fungsi, fungsi anak panah secara leksikal mengikat "ini" pada skop leksikal yang disertakan.
Ini bermakna "ini" dalam fungsi anak panah sentiasa merujuk kepada objek yang mengandungi definisi fungsi anak panah. Contohnya:
var testFunction = () => { console.log(this); }; testFunction();
Dalam kod ini, "ini" dalam fungsi anak panah tidak merujuk kepada fungsi anak panah gemuk itu sendiri, seperti yang anda buat spekulasi. Sebaliknya, ia merujuk kepada objek yang mengandungi definisi fungsi anak panah. Memandangkan fungsi anak panah ditakrifkan dalam skop global, "ini" akan mempunyai konteks global. Oleh itu, output kod akan menjadi objek global.
Pengikatan leksikal bermanfaat dalam situasi di mana nilai "ini" mungkin berubah semasa pelaksanaan fungsi. Sebagai contoh, pertimbangkan contoh berikut:
function Person() { this.age = 0; setInterval(() => { this.age++; // |this| properly refers to the person object }, 1000); } var p = new Person();
Dalam contoh ini, fungsi anak panah menangkap nilai "ini" bagi objek Orang yang disertakan. Ini memastikan bahawa operasi kenaikan sentiasa dilakukan pada contoh orang yang betul, walaupun jika panggilan balik setTimeout digunakan secara tak segerak dan konteks pelaksanaan telah berubah.
Ringkasnya, fungsi anak panah dalam ES6 mengikat "ini" secara leksikal pada melampirkan skop leksikal. Ini membolehkan "ini" merujuk kepada objek yang sama tanpa mengira konteks pemanggilan fungsi, menjadikannya lebih mudah untuk mengendalikan "ini" dalam senario fungsi tak segerak atau bersarang.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Anak Panah ES6 Mengendalikan Kata Kunci 'ini'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!