Perintah Pengisytiharan dan Penilaian Fungsi JavaScript
Apabila bekerja dengan fungsi JavaScript, adalah penting untuk memahami perbezaan antara pengisytiharan fungsi dan ungkapan serta kesannya atas perintah pelaksanaan. Ini boleh digambarkan dengan meneliti empat contoh:
// 1 (function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })(); // 2 (function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); // 3 (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); // 4 (function() { setTimeout(function() { someFunction4(); }, 10); function someFunction4() { alert('here4'); } })();
Contoh pertama tidak berfungsi kerana susunan penyusunan dan pelaksanaan. Dalam JavaScript, kod disusun dalam dua fasa: penyusunan dan pelaksanaan.
Fasa 1: Penyusunan
Semasa penyusunan, pembolehubah dicipta. Dalam Contoh 1, pembolehubah someFunction1 diisytiharkan selepas panggilan setTimeout. Oleh itu, apabila pengkompil menemui someFunction1 dalam hujah setTimeout, ia tidak dapat mencari pembolehubah.
Fasa 2: Pelaksanaan
Semasa pelaksanaan, penterjemah menghantar nilai someFunction1 untuk setTimeout. Memandangkan pembolehubah someFunction1 masih tidak ditentukan, penterjemah gagal untuk melaksanakan fungsi.
Sebaliknya, Contoh 2, 3 dan 4 semuanya berfungsi kerana sama ada pengisytiharan fungsi ditakrifkan sebelum panggilan setTimeout (Contoh 2), atau fungsi tanpa nama dihantar ke setTimeout (Contoh 3), atau rujukan kepada fungsi yang diisytiharkan digunakan (Contoh 4).
Pengisytiharan Fungsi vs Ungkapan Fungsi
Memahami perbezaan antara pengisytiharan fungsi dan ungkapan adalah kunci. Pengisytiharan fungsi (seperti dalam Contoh 2) dihuraikan semasa penyusunan, manakala ungkapan fungsi (seperti dalam Contoh 1 dan 3) dinilai semasa pelaksanaan. Perbezaan ini boleh memberi kesan kepada akses kepada pembolehubah dan susunan kod dilaksanakan.
Atas ialah kandungan terperinci Bagaimanakah Pengisytiharan dan Ungkapan Fungsi Mempengaruhi Perintah Pelaksanaan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!