Dalam JavaScript, pra-penyusunan ialah operasi yang dilakukan sebelum kod dilaksanakan. Ia akan mengisytiharkan pembolehubah dan fungsi terlebih dahulu, dan meletakkannya dalam objek yang dibuat mengikut peraturan tertentu.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.
JS running trilogy
1. Analisis sintaks: Sebelum enjin js menghuraikan kod js, ia akan mengimbas keseluruhan teks untuk mencari Make low -ralat sintaks peringkat, seperti pendakap yang salah ditulis dan seumpamanya.
2. Sebarang tatabahasa dan pernyataan akan ditukar kepada objek, GO (Global Object), AO (Active Object) yang diletakkan dalam GO dan AO mengikut peraturan tertentu
3. Tafsiran dan pelaksanaan: Susun dan laksanakan satu baris pada satu masa Apabila tiada masalah dengan analisis sintaks dan peringkat pra-penyusunan telah selesai, mulakan tafsiran dan laksanakan kod
Apakah jenis. pra-penyusunan?
Pra-penyusunan ialah operasi yang dilakukan sebelum kod JavaScript untuk memajukan pengisytiharan pembolehubah dan pengisytiharan fungsi Kod ini diletakkan dalam objek yang dibuat mengikut peraturan tertentu.
Proses pra-penyusunan:
Pra-penyusun tetingkap GO
1 Cipta objek GO apabila teg skrip dilaksanakan
2 pembolehubah Deklarasi, nama pembolehubah digunakan sebagai nama atribut objek GO, dan nilainya tidak ditentukan.
3 Cari pengisytiharan fungsi Nama fungsi digunakan sebagai nama atribut bagi objek GO, dan nilainya ialah badan fungsi Jika nama fungsi adalah sama dengan nama pembolehubah, timpa terus
Precompilation fungsi AO
1. objek sebagai nama atribut objek AO Nilai adalah parameter sebenar Ya, pengisytiharan fungsi tidak dipanggil pembolehubah. Jika tiada nilai parameter sebenar, ia tidak ditentukan.
3. Cari pengisytiharan pembolehubah Nama pembolehubah digunakan sebagai nama atribut objek AO, dan nilainya tidak ditentukan. Jika nama pembolehubah dan nama parameter formal adalah sama, jangan risau.
4, cari pengisytiharan fungsi, nama fungsi digunakan sebagai nama atribut objek AO, dan nilainya ialah badan fungsi Jika nama fungsi adalah sama dengan nama pembolehubah, tulis ganti terus
Mari tulis sekeping kod untuk memperkenalkannya secara ringkas Proses prapengumpulan fungsi Yiha
1 Pertama, objek AO dicipta sebelum melaksanakan keseronokan.function fun(a,b){ console.log(a); var a = 10; console.log(a); function a(){} console.log(a) a = 1; var b; console.log(b); var b = function(){} console.log(b); } fun(1,2);
funAO{ }
funAO{ a : 1, b : 2 }
funAO{ a : 1, b : 2 }
funAO{ a : function a(){}, b : 2 }
function fun(a,b){ console.log(a); //往上面的AO对象里面寻找,a的值是function a(){}。 这里就输出function a(){} var a = 10; console.log(a);//上面一行代码把a赋值10 ,所以这里输出10 function a(){} console.log(a)//这里也是10,因为上面函数已经提前了 a = 1; var b; console.log(b);//往上面的AO对象里面寻找,b的值是2。 这里就输出2 var b = function(){}//这里的函数为啥不能提前,因为这里的是一个函数表达式,这个函数没有函数名所以不能提前。 console.log(b);//这里把b赋值function(){},所以这里输出function(){} } fun(1,2);
function add(){ //这里的话碰到if判断,for....除了function作用域之外的咱们都得正常分析, //所以这里的值为undefined其实就是var a提前了赋值undefined console.log(a);//这里的输出结果为?undefined if(a){ var a = 10; } //这里是把a的值传入判断里面undefined返回的是false所以进不去,值就不会改变这里还是undefined console.log(a);//undefined } add();
Cadangan berkaitan:
Tutorial pembelajaran javascriptAtas ialah kandungan terperinci Apakah precompilation dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!