Rumah >hujung hadapan web >tutorial js >'Fasa prakompilasi' dan 'fasa pelaksanaan' semasa JavaScript menjalankan kemahiran process_javascript
Berbanding dengan bahasa lain, javascript ialah bahasa yang ditaip lemah Dalam bahasa lain seperti java, pelaksanaan program memerlukan peringkat penyusunan, dan terdapat "peringkat pra-penyusunan" yang serupa dalam javascript (pra-penyusunan javascript. -peringkat penyusunan). Penyusunan adalah berdasarkan blok kod855348821b2e8f2cc4b633bf98f064df713e1e4451c8393b8e637e129c6b7b12, iaitu, setiap kali blok kod ditemui, ia akan dikompilasi>dilaksanakan. Memahami mekanisme pelaksanaan enjin javascript akan membantu dalam proses menulis kod js Ringkasan idea
Pertama sekali, mari belajar tentang dua kaedah pengisytiharan dalam JavaScript, var dan fungsi Yang pertama mengisytiharkan pembolehubah, dan yang terakhir mengisytiharkan kaedah
Dalam pra-penyusunan, javascript membuat dua penyelesaian pemprosesan untuk dua pengisytiharan ini
<script> var a = "1"; //声明变量a function b(){ //声明方法b alert(); } var c = function(){ //声明变量c alert(); } </script>
Dalam blok kod di atas, a dan c ialah penugasan pembolehubah, dan b ialah perisytiharan fungsi Apabila kod di atas dilaksanakan, ia akan mula-mula memasuki peringkat pra-penyusunan Penetapan a dan c kepada pembolehubah akan membuka a ruang memori dalam memori dan Tuding pada nama pembolehubah, dan nilai yang diberikan tidak ditentukan
Untuk pengisytiharan fungsi, ruang memori juga akan diperuntukkan, tetapi objek yang ditetapkan akan memberikan fungsi yang diisytiharkan kepada nama fungsi
Fasa pra-penyusunan: (PS: Tanpa mengira susunan pembolehubah dan fungsi diisytiharkan dalam kod, pembolehubah akan diisytiharkan dahulu dan kemudian berfungsi dalam fasa pra-penyusunan)
<script> var a = undefined; var c = undefined; var b = function(){ alert(); } </script>
Fasa pelaksanaan:
<script> a = "1"; c = function(){ alert(); } </script>
Langkah pelaksanaan keseluruhan:
<script> var a = undefined; var c = undefined; var b = function(){ alert(); } a = "1"; c = function(){ alert(); } </script>
Tajuk:
<script> var a = "1"; function b(){ alert(a); var a = "2"; } b(); </script>
ps: pra-kompilasi javascript
1. Pratakrif pembolehubah dahulu, kemudian pratakrif fungsi
2. Pra-penyusunan pembolehubah hanya mengisytiharkannya, tidak memulakannya dan memulakannya semasa pelaksanaan
3. Fungsi yang ditakrifkan oleh pernyataan fungsi bukan sahaja mengisytiharkan nama fungsi, tetapi juga memproses badan fungsi
4. Fungsi tanpa nama tidak akan dikompilasi sebelumnya
function f(){ // 声明函数f return 1; } alert(f()); // 返回1 var f = function(){ // 定义匿名函数f return 2; } alert(f()); // 返回2
Pembolehubah f dipratakrifkan dahulu, dan kemudian fungsi f() dengan nama yang sama menimpa pembolehubah f, jadi 1 adalah output untuk kali pertama;
var f = function(){ // 定义匿名函数f return 1; } alert(f()); // 返回1 function f(){ // 声明函数f return 2; } alert(f()); // 返回1