Dalam percubaan untuk meneroka fungsi alias dalam JavaScript, pengguna menghadapi kesukaran mendapatkan kaedah alias untuk berfungsi dengan baik. Mereka memerhatikan gelagat ini dalam berbilang penyemak imbas, termasuk Firefox, Chrome dan IE8, dan tertanya-tanya sama ada mereka membuat ralat atau isu itu lebih meluas.
Untuk menangani isu ini, adalah penting untuk memahami cara fungsi dan objek JavaScript beroperasi. Apabila fungsi JavaScript digunakan, jurubahasa JavaScript menentukan skop dan menghantarnya kepada fungsi. Jika tiada skop ditakrifkan secara eksplisit menggunakan kaedah guna, objek Tetingkap global berfungsi sebagai skop untuk fungsi tersebut.
Dalam kes fungsi, seperti jumlah(a, b), yang tidak menggunakan kata kunci ini, nilai ini tidak signifikan. Walau bagaimanapun, untuk fungsi yang merujuk ini, seperti Person(birthDate), nilai ini menjadi penting. Dengan menetapkan skop menggunakan penggunaan secara manual, adalah mungkin untuk mengatasi skop lalai JavaScript.
Dalam konteks penyalian, apabila rujukan fungsi ditugaskan kepada pembolehubah, seperti sebagai var $ = document.getElementById, skop fungsi alias menjadi penting. Jika fungsi asal menjangkakan kata kunci ini merujuk kepada objek tertentu (seperti dokumen dalam kes getElementById), aliasing boleh menyebabkan isu.
Untuk menggambarkan, katakan kita melaksanakan $('someElement'): seruan document.getElementById yang terhasil akan dilaksanakan dengan objek tetingkap seperti ini, manakala fungsi asal mungkin menjangkakan ini merujuk kepada dokumen. Ketidakpadanan ini boleh membawa kepada ralat.
Untuk menyelesaikan isu ini dalam kes document.getElementById, satu penyelesaian adalah dengan memanggil $.apply(document, [ 'someElement']), secara eksplisit menetapkan skop yang betul untuk fungsi beralias.
Terutamanya, gelagat penyalian fungsi berbeza-beza merentas penyemak imbas. Dalam Internet Explorer, sebagai contoh, tetingkap dan dokumen mungkin merujuk kepada objek yang sama, membenarkan pengalianan document.getElementById berfungsi dengan betul.
Untuk menggambarkan lebih lanjut nuansa skop fungsi dan aliasing, contoh kompleks disediakan: fungsi Person, yang merangkumi berbilang kaedah getAge dengan tingkah laku skop yang berbeza-beza. Contoh menunjukkan kepentingan untuk mempertimbangkan dengan teliti skop yang dimaksudkan apabila bekerja dengan rujukan fungsi.
Dengan memahami mekanisme rumit skop fungsi JavaScript, pembangun boleh menggunakan aliasing fungsi dengan berkesan dan mengelakkan kemungkinan perangkap.
Atas ialah kandungan terperinci Mengapa Fungsi Aliasing Menyebabkan Gelagat Tidak Dijangka dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!