Rumah >hujung hadapan web >tutorial js >Mengapakah `setTimeout` gagal dilaksanakan dengan ungkapan fungsi yang diberikan kepada pembolehubah sebelum ia diisytiharkan, tetapi berjaya dengan pengisytiharan fungsi?
Masalah:
Mengapa contoh JavaScript berikut gagal dilaksanakan?
<code class="javascript">(function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })();</code>
Sementara contoh lain yang serupa berfungsi seperti yang dimaksudkan:
<code class="javascript">(function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); (function() { setTimeout(function() { someFunction4(); }, 10); function someFunction4() { alert('here4'); } })();</code>
Penyelesaian:
Isunya terletak pada susunan penilaian antara pengisytiharan fungsi dan ungkapan fungsi.
Pengisytiharan Fungsi lwn. Ungkapan
Perintah Penilaian
Kod JavaScript menjalani dua fasa pemprosesan:
Analisis Contoh
Contoh 1:
Contoh 2, 3 dan 4:
Penjelasan Tambahan
Atas ialah kandungan terperinci Mengapakah `setTimeout` gagal dilaksanakan dengan ungkapan fungsi yang diberikan kepada pembolehubah sebelum ia diisytiharkan, tetapi berjaya dengan pengisytiharan fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!