Rumah >hujung hadapan web >tutorial js >Bagaimanakah Pengikatan Leksikal Mempengaruhi Kata Kunci 'ini' dalam Fungsi Anak Panah ES6?

Bagaimanakah Pengikatan Leksikal Mempengaruhi Kata Kunci 'ini' dalam Fungsi Anak Panah ES6?

Barbara Streisand
Barbara Streisandasal
2024-12-18 15:27:12431semak imbas

How Does Lexical Binding Affect the

Ikatan Leksikal "ini" dalam Fungsi Anak Panah ES6

Fungsi anak panah dalam ES6 terkenal dengan tingkah laku pengikatan leksikal unik "ini. " Tidak seperti fungsi JavaScript lain yang "ini" terikat secara dinamik, fungsi anak panah mengekalkan skop leksikal, memberikan "ini" kepada nilai yang sama dengan konteks yang disertakan.

Untuk menggambarkan konsep ini, pertimbangkan kod berikut:

var testFunction = () => {
  console.log(this)
};
testFunction();

Bertentangan dengan tingkah laku JavaScript tradisional di mana "ini" merujuk kepada objek global (tetingkap), fungsi anak panah menangkap nilai "ini" konteks yang disertakan. Dalam contoh ini, "ini" akan merujuk kepada skop global (tetingkap) memandangkan testFunction ditakrifkan di luar sebarang objek.

Selain itu, pengikatan leksikal memastikan "ini" kekal konsisten sepanjang hayat fungsi anak panah. Pertimbangkan contoh berikut:

function Person(){
  this.age = 0;

  setInterval(() => {
    this.age++; // |this| properly refers to the person object
  }, 1000);
}

var p = new Person();

Di sini, fungsi anak panah menangkap nilai "ini" bagi objek Orang, membenarkannya mengakses dan mengubah suai sifatnya (dalam kes ini, menambah harta umur). Tingkah laku ini memastikan bahawa "ini" sentiasa merujuk kepada konteks yang betul, tidak kira cara fungsi anak panah dipanggil atau konteks pelaksanaan berubah.

Atas ialah kandungan terperinci Bagaimanakah Pengikatan Leksikal Mempengaruhi Kata Kunci 'ini' dalam Fungsi Anak Panah ES6?. 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