Rumah >hujung hadapan web >tutorial js >Bagaimanakah Fungsi Anak Panah ES6 Mengendalikan Kata Kunci 'ini'?

Bagaimanakah Fungsi Anak Panah ES6 Mengendalikan Kata Kunci 'ini'?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 20:48:14184semak imbas

How Do ES6 Arrow Functions Handle the

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!

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