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();
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'
Sebaliknya, jika kita menggunakan fungsi anak panah untuk kaedah salam:
var person = { name: 'John', greet: () => { console.log(this.name) } }; person.greet(); // logs undefined
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!