Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Pengisytiharan dan Ungkapan Fungsi Mempengaruhi Perintah Pelaksanaan dalam JavaScript?

Bagaimanakah Pengisytiharan dan Ungkapan Fungsi Mempengaruhi Perintah Pelaksanaan dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 18:35:47157semak imbas

How Do Function Declarations and Expressions Affect Execution Order in JavaScript?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn