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?

Mary-Kate Olsen
Lepaskan: 2024-12-24 08:26:16
asal
666 orang telah melayarinya

How Does Lexical Binding Affect the `this` Keyword in ES6 Arrow Functions?

Memahami Pengikatan Leksikal "ini" dalam Fungsi Anak Panah ES6

Dalam bidang JavaScript, fungsi anak panah memperkenalkan perubahan halus namun memberi kesan dalam cara "ini" kata kunci berkelakuan. Tidak seperti pengisytiharan fungsi tradisional, fungsi anak panah mempamerkan pengikatan leksikal, konsep yang mengawal nilai "ini" dalam skopnya.

Apakah itu Pengikatan Leksikal?

Pengikatan Leksikal merujuk kepada mekanisme di mana nilai "ini" ditentukan oleh persekitaran leksikal fungsi, iaitu skop di mana fungsi ditakrifkan. Sebaliknya, fungsi tradisional menggunakan pengikatan dinamik, di mana nilai "ini" ditentukan oleh konteks pemanggil, walaupun jika fungsi itu ditakrifkan dalam skop luar.

Implikasi dalam Fungsi Anak Panah

Fungsi anak panah terikat secara leksikal, bermakna ia mewarisi nilai "ini" daripada konteks sekelilingnya. Ringkasnya, "ini" dalam fungsi anak panah sentiasa merujuk kepada objek yang mengandungi definisi fungsi anak panah.

Contoh

Pertimbangkan coretan kod berikut:

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

Dalam contoh ini, "ini" di dalam fungsi anak panah merujuk kepada objek global (tetingkap dalam penyemak imbas). Ini kerana fungsi anak panah ditakrifkan dalam skop global dan mewarisi nilai "ini" skop tersebut.

Berbeza dengan Fungsi Tradisional

Pengisytiharan fungsi tradisional, pada sebaliknya, gunakan pengikatan dinamik. Jika fungsi tradisional ditakrifkan dalam objek, "ini" merujuk kepada objek itu apabila fungsi itu digunakan, tanpa mengira konteks panggilan.

Sebagai contoh, coretan kod berikut menunjukkan pengikatan dinamik:

var person = {
  name: 'John',
  greet: function() {
    console.log(this.name)
  }
};
person.greet(); // logs 'John'
Salin selepas log masuk

Sebaliknya, jika kita menggunakan fungsi anak panah untuk kaedah salam:

var person = {
  name: 'John',
  greet: () => {
    console.log(this.name)
  }
};
person.greet(); // logs undefined
Salin selepas log masuk

Sejak fungsi anak panah terikat secara leksikal, "ini" merujuk kepada objek global dan bukan objek orang, menyebabkan output tidak ditentukan.

Aplikasi Pengikatan Leksikal

Ikatan leksikal "ini" dalam fungsi anak panah mempunyai implikasi yang ketara, terutamanya untuk operasi tak segerak dan pengendalian peristiwa. Dengan mewarisi nilai "ini" daripada konteks sekeliling, fungsi anak panah memastikan objek yang betul dikekalkan untuk penyebutan kaedah dan panggilan balik acara.

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!

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