JavaScript ialah bahasa pengaturcaraan yang digunakan secara meluas. Kelebihan terbesarnya ialah keupayaan untuk menulis program yang berinteraksi dengan halaman web, dengan itu mencapai pengalaman pengguna yang lebih kaya.
Antaranya, fungsi JavaScript adalah bahagian yang sangat kritikal. Fungsi membolehkan kami membungkus blok kod tertentu bersama-sama dan kemudian memanggilnya apabila diperlukan. Ini menjadikan kod lebih jelas, lebih mudah untuk diselenggara dan dilanjutkan. Pada masa yang sama, apabila memanggil fungsi, kita juga boleh menghantar parameter kepada fungsi untuk menjadikan fungsi itu lebih fleksibel dan serba boleh.
Namun, dalam praktiknya, kadangkala kita menghadapi masalah pelik. Iaitu, fungsi JavaScript kami boleh menerima parameter Bahasa Inggeris, tetapi tidak boleh melaksanakan kod JavaScript. Ramai orang mungkin menghadapi masalah ini tetapi tidak tahu bagaimana untuk menyelesaikannya.
Seterusnya, kami akan menyelami isu ini dan menyediakan beberapa penyelesaian.
Pertama sekali, kita perlu menjelaskan sifat masalah. Parameter yang diterima oleh fungsi adalah teks biasa, yang sepatutnya jelas kepada semua orang. Dari perspektif fungsi, tiada perbezaan antara parameter Bahasa Inggeris dan parameter Cina, dan JavaScript tidak mengambil berat tentang bahasa parameter. Oleh itu, masalahnya adalah semasa pelaksanaan fungsi. Kita perlu melihat dengan teliti pelaksanaan fungsi untuk menentukan sama ada terdapat beberapa kod yang tidak sesuai.
Sekarang, mari lihat contoh mudah:
function sayHello(name) { alert("Hello " + name); }
Ini ialah fungsi JavaScript yang sangat asas yang menerima nama parameter, dan kemudian menggunakan parameter ini untuk muncul kotak mesej. Pada masa ini, jika kita memanggil fungsi ini dan menghantar parameter bahasa Inggeris, contohnya:
sayHello("Tom");
, fungsi ini boleh dilaksanakan secara normal dan kandungan kotak mesej pop timbul ialah "Hello Tom ". Tetapi apa yang berlaku jika kita memasukkan kod JavaScript sebagai parameter, contohnya:
sayHello("<script>alert('Hello');</script>");
? Apabila anda memanggil fungsi tersebut, anda akan mendapati bahawa walaupun fungsi dipanggil dengan betul, kandungan kotak mesej pop timbul bukanlah "Hello" yang dijangkakan, tetapi teks yang kelihatan seperti tag skrip. Ini kerana fungsi itu tidak melaksanakan kod JavaScript yang dihantar, tetapi secara langsung mengeluarkannya sebagai teks.
Jadi, bagaimana untuk menyelesaikan masalah ini? Sebenarnya, kaedahnya sangat mudah: kita hanya perlu mengekod parameter masuk. Parameter yang dikodkan ialah sekeping teks biasa, dan aksara khas di dalamnya telah dilepaskan dan tidak akan memberi kesan kepada pelaksanaan fungsi. Fungsi pengekodan JavaScript yang biasa digunakan termasuk encodeURIComponent dan encodeURI yang pertama mengekod aksara selain daripada huruf, nombor dan -_.!~*'(), manakala yang terakhir hanya mengekod beberapa aksara khas, seperti / ? Fungsi pengekodan yang mana untuk dipilih perlu diputuskan mengikut situasi sebenar.
Fungsi yang ditulis semula adalah seperti berikut:
function sayHello(name) { var encodedName = encodeURIComponent(name); alert("Hello " + encodedName); }
Kaedah panggilan juga berubah dengan sewajarnya:
sayHello("<script>alert('Hello');</script>");
Pada masa ini, fungsi akan dilaksanakan seperti biasa.
Di sini, kami membincangkan lebih lanjut masalah fungsi JavaScript yang menerima parameter Bahasa Inggeris tetapi tidak melaksanakan kod JavaScript, dan memperkenalkan penyelesaiannya. Semoga artikel ini akan membantu anda memahami fungsi dan JavaScript dengan lebih baik sambil menjadikan kod anda lebih mantap dan selamat.
Atas ialah kandungan terperinci Perbincangan mendalam tentang masalah fungsi JavaScript menerima parameter dalam bahasa Inggeris tetapi tidak melaksanakan js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!