Apakah precompilation dalam javascript

WBOY
Lepaskan: 2022-03-10 11:05:39
asal
1978 orang telah melayarinya

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.

Apakah precompilation dalam javascript

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi JavaScript 1.8.5, komputer Dell G3.

Apakah prakompilasi dalam javascript

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);
Salin selepas log masuk

2. Cari parameter sebenar dan parameter formal, tambahkan parameter formal pada objek sebagai nama atribut objek AO, dan nilainya ialah parameter sebenar pengisytiharan tidak dipanggil pembolehubah. Jika tiada nilai parameter sebenar, ia tidak ditentukan.
funAO{
}
Salin selepas log masuk

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, abaikan
funAO{
    a : 1,
    b : 2
}
Salin selepas log masuk
Salin selepas log masuk

4 dan cari pengisytiharan fungsi Nama fungsi digunakan sebagai nama atribut objek AO, dan nilainya ialah fungsi badan. Jika nama fungsi dan nama pembolehubah adalah sama, tulis ganti terus
funAO{
    a : 1,
    b : 2
}
Salin selepas log masuk
Salin selepas log masuk

Penjelasan dan pelaksanaan
funAO{
    a : function a(){},
    b : 2
}
Salin selepas log masuk

Ada kemungkinan lain
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);
Salin selepas log masuk

Ini ialah proses pelaksanaan yang telah disusun sebelumnya!
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();
Salin selepas log masuk

Cadangan berkaitan:

Tutorial pembelajaran javascript

Atas ialah kandungan terperinci Apakah precompilation dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!