這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)JavaScript預(yù)編譯什么意思,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
js運(yùn)行代碼共分三步
語法分析
預(yù)編譯
解釋執(zhí)行
JavaScript代碼在運(yùn)行時(shí),首先會(huì)進(jìn)行語法分析,通篇檢查代碼是否存在低級(jí)錯(cuò)誤,然后進(jìn)行預(yù)編譯,整理內(nèi)部的一個(gè)邏輯,最后再開始一行一行的執(zhí)行代碼
代碼在執(zhí)行之前,系統(tǒng)會(huì)通篇掃描一遍,檢查代碼有沒有低級(jí)的語法錯(cuò)誤,比如少寫個(gè)大括號(hào)。
預(yù)編譯發(fā)生在函數(shù)執(zhí)行的前一刻。變量未經(jīng)聲明就賦值,此變量為全局對(duì)象所有
a = 3
var b = c = 4
一切聲明的全局變量,全是window的屬性
var a = 1 ===> window.a = 1
創(chuàng)建AO(Activation Object)對(duì)象(里面存儲(chǔ)的是函數(shù)內(nèi)部的局部變量)
找形參和變量聲明,將變量和形參名做為AO屬性名,值為undefined
將實(shí)參和形參統(tǒng)一
在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體
用一個(gè)例子來說明一下,也可以自己先給出一個(gè)答案,再繼續(xù)往下看
function fn(a) { console.log(a); var a = 123; console.log(a); function a() {} console.log(a); var b = function() {}; console.log(b); function d() {} console.log(d) } fn(1);
第一步,創(chuàng)建AO(Activation Object)對(duì)象 {}第二步,找形參和變量聲明,將變量和形參名做為AO屬性名,值為undefined
{ a: undefined, b: undefined, }
第三步,將實(shí)參和形參統(tǒng)一
{ a: 1, b: undefined, }
第四步,找函數(shù)聲明,值賦予函數(shù)體
{ a: function a() {}, b: undefined, d: function d() {} }
所以在函數(shù)fn執(zhí)行的前一刻,a、b、d的值如上所示
所以fn(1)執(zhí)行的結(jié)果為
// ? a() {}
// 123
// 123
// ? () {}
// ? d() {}
在全局作用域里,預(yù)編譯過程有些許不同
創(chuàng)建GO(Global Object)對(duì)象(里面存儲(chǔ)的是函數(shù)內(nèi)部的全局變量)GO === window
找形參和變量聲明,將變量和形參名做為GO屬性名,值為undefined
在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體
一行一行的執(zhí)行代碼
這里有幾個(gè)例題,有興趣的可以看一下
function test(a, b) { console.log(a); console.log(b); var b = 234; console.log(b); a = 123; console.log(a); function a() {} var a; b = 234; var b = function() {}; console.log(a); console.log(b); } test(1);
global = 100; function fn() { console.log(global); global = 200; console.log(global); var global = 300; } fn(); var global;
function test() { console.log(b); if (a) { var b = 100; } c = 234; console.log(c); } var a; test(); a = 10; console.log(c);
上述就是小編為大家分享的JavaScript預(yù)編譯什么意思了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:JavaScript預(yù)編譯什么意思-創(chuàng)新互聯(lián)
文章地址:http://m.newbst.com/article30/dehdso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、做網(wǎng)站、軟件開發(fā)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容