Rumah >hujung hadapan web >tutorial js >Apakah promosi berubah-ubah dalam js? Mengapa ada promosi berubah-ubah?
Apakah itu promosi berubah-ubah dalam JavaScript? Artikel ini akan membawa anda melalui promosi berubah-ubah dalam js dan memperkenalkan sebab terdapat promosi berubah-ubah.
JavaScript ialah bahasa satu utas, jadi pelaksanaan mestilah teratur. Tetapi ia tidak dianalisis dan dilaksanakan baris demi baris, tetapi dianalisis dan dilaksanakan sekeping demi sekeping Fasa penyusunan akan dilakukan terlebih dahulu dan kemudian fasa pelaksanaan. Semasa fasa penyusunan, beberapa milisaat sebelum kod sebenarnya dilaksanakan, semua pembolehubah dan pengisytiharan fungsi dikesan dan ditambah pada ingatan dalam struktur data JavaScript yang dipanggil Persekitaran Leksikal. Jadi pembolehubah dan fungsi ini boleh digunakan sebelum ia benar-benar diisytiharkan.
Mari kita mulakan dengan contoh mudah:
a = 2; var a; console.log(a);
Apakah yang akan dikeluarkan oleh kod di atas Jika kod ini dilaksanakan dari atas ke bawah, ia pasti akan dikeluarkan tanpa definisi bukan bahasa yang dilaksanakan dari atas ke bawah. Output kod ini ialah 2, adakah ia tidak dijangka? Jadi, mengapa ini berlaku? Perkara utama terletak pada--Promosi boleh ubah. Ia akan menaikkan pengisytiharan semua pembolehubah dalam skop semasa ke bahagian atas program Oleh itu, kod di atas adalah bersamaan dengan kod berikut.
var a; a = 2; console.log(a);
Kemudian mari kita lihat contoh lain:
console.log(a); var a = 2;
Apakah yang akan dikeluarkan oleh kod ini? Output 2? Malah, kod ini akan mengeluarkan undefined. kenapa ni? Seperti yang baru saya katakan, JavaScript akan mempromosikan pengisytiharan pembolehubah ke bahagian atas, tetapi pernyataan tugasan tidak akan dinaikkan pangkat Untuk js, var a = 2 dibahagikan kepada penghuraian dua langkah :
<.>var a; a = 2;Dan js hanya akan mempromosikan ayat var a, jadi pernyataan tadi adalah bersamaan dengan:
var a; console.log(a); a = 2;
fn(); function fn () { console.log('fn'); } var fn = 2;Apa yang anda fikir akan dihasilkan? Adakah saya akan mendapat ralat jika saya menulis ini? Malah, hasil keluaran ialah fn. Ini menerangkan soalan yang baru kami tanya, apabila pengisytiharan fungsi muncul bersama-sama dengan pengisytiharan lain, siapa yang diutamakan? Jawapannya ialah,
pengisytiharan fungsi adalah di atas segalanya, lagipun, fungsi adalah bangsawan js .
Apa yang perlu dilakukan dengan begitu banyak pengisytiharan fungsi?fn(); function fn () { console.log('1'); } function fn () { console.log('2'); }Hasil keluaran kod di atas ialah 2. Ini kerana apabila
mempunyai berbilang pengisytiharan fungsi, pengisytiharan fungsi terakhir menggantikan sebelumnya.
Ada satu contoh terakhir:fn(); var fn = function () { console.log('fn'); }Selepas pemahaman di atas, adakah ini sangat mudah? Ini adalah sama seperti contoh kedua Format var fn = function() {} ini dipanggil ungkapan fungsi. Ia sebenarnya terbahagi kepada dua bahagian:
var fn; fn = function() {};Merujuk kepada Contoh 2, kita boleh tahu bahawa keputusan ini sepatutnya ralat (kerana fn diisytiharkan tetapi tidak ditetapkan, jadi fn tidak ditentukan).
Pengenalan kepada Pengaturcaraan! !
Atas ialah kandungan terperinci Apakah promosi berubah-ubah dalam js? Mengapa ada promosi berubah-ubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!