Pengisytiharan fungsi dan ungkapan fungsi dalam JavaScript

PHPz
Lepaskan: 2018-10-12 15:23:26
asal
1372 orang telah melayarinya

Setakat ini, kami tidak membezakan antara pengisytiharan fungsi dan ungkapan fungsi. Malah, penghurai tidak melayan pengisytiharan fungsi dan ungkapan fungsi secara sama rata apabila memuatkan data ke dalam persekitaran pelaksanaan. Penghurai akan terlebih dahulu membaca pengisytiharan fungsi dan menjadikannya tersedia (boleh diakses) sebelum melaksanakan sebarang kod, ia tidak akan benar-benar ditafsirkan dan dilaksanakan sehingga penghurai mencapai baris kod di mana ia berada. Contoh berikut:

Kod adalah seperti berikut:

alert(sum(10,10));
function sum(num1,num2)
{
    return num1+num2;
}
Salin selepas log masuk

Kod di atas boleh dilaksanakan dengan betul, kerana sebelum kod bermula melaksanakan, penghuraian Pengisytiharan Fungsi telah dibaca dan ditambah pada persekitaran pelaksanaan melalui proses yang dipanggil pengisytiharan fungsi mengangkat. Apabila menilai kod, enjin JavaScript mengisytiharkan fungsi pada laluan pertama dan meletakkannya di bahagian atas pepohon sumber. Jadi, walaupun kod yang mengisytiharkan fungsi berada di belakang kod yang memanggilnya, enjin JavaScript boleh menaikkan pengisytiharan fungsi ke atas. Jika, seperti yang ditunjukkan dalam contoh berikut, pengisytiharan fungsi di atas ditukar kepada ungkapan fungsi yang setara, ralat akan berlaku semasa pelaksanaan.

Kod adalah seperti berikut:

alert(sum(10,10));
var sum=function(num1,num2)
{
    return num1+num2;
};
Salin selepas log masuk

Kod di atas akan menyebabkan ralat semasa berjalan kerana fungsi itu terletak dalam penyataan permulaan , dan bukannya perisytiharan fungsi. Dalam erti kata lain, jumlah pembolehubah tidak akan memegang rujukan kepada fungsi sehingga penyataan di mana fungsi itu dilaksanakan lebih-lebih lagi, kerana baris pertama kod akan menyebabkan ralat "pengecam yang tidak dijangka", ia sebenarnya tidak akan dilaksanakan; baris seterusnya.

Kecuali fakta bahawa fungsi itu boleh diakses melalui pembolehubah semasa pengisytiharan, sintaks pengisytiharan fungsi dan ungkapan fungsi sebenarnya adalah setara daripada.

Nota: Anda juga boleh memanggil pengisytiharan fungsi dan ungkapan fungsi pada masa yang sama, seperti var sum=function sum(){}. Walau bagaimanapun, sintaks ini akan menyebabkan ralat dalam Safari.

Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu semua orang yang belajar javascript.

Untuk lebih banyak tutorial berkaitan, sila lawati tutorial javascript

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan