欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

javascript中預編譯指的是什么意思

這篇文章將為大家詳細講解有關(guān)javascript中預編譯指的是什么意思,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

公司專注于為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號開發(fā)、電子商務(wù)商城網(wǎng)站建設(shè)微信小程序定制開發(fā),軟件定制制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)建站更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

在JavaScript中,預編譯就是代碼執(zhí)行前進行的一項操作,會把變量聲明提前,函數(shù)聲明也提前,把這些按照一定的規(guī)則,放在創(chuàng)建的對象里面去的一個過程。

本教程操作環(huán)境:windows10系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript中什么是預編譯

js運行三部曲

1.語法分析 : js引擎在解析js代碼之前,會先通篇掃描一下,找出低級的語法錯誤,比如寫錯大括號之類的。

2.預編譯 任何的語法和語句全部會被轉(zhuǎn)換成對象,GO(Global Object),AO(Active Object)把代碼按照 一定的規(guī)則,放到GO和AO中

3.解釋執(zhí)行 編譯一行執(zhí)行一行,當語法分析沒有問題,并且已經(jīng)完成預編譯階段之后,就開始解釋執(zhí)行代碼

什么的預編譯?

預編譯就是在JavaScript代碼前進行的一項操作會把變量聲明提前,函數(shù)聲明也提前,把這些代碼按照一定的規(guī)則,放在創(chuàng)建的對象里面去。

預編譯的過程:

GO window預編譯

1,在執(zhí)行script標簽的一瞬間創(chuàng)建一個GO對象

2,尋找變量聲明,變量名作為GO對象的屬性名,值為undefined。

3,尋找函數(shù)聲明,函數(shù)名作為GO對象的屬性名,值為函數(shù)體,如果函數(shù)名和變量名一樣,直接覆蓋

AO 函數(shù)預編譯

1,在函數(shù)執(zhí)行的一瞬間創(chuàng)建一個AO對象

2,尋找實參和形參,將形參作為AO對象的屬性名添加到對象中,值為實參,值得注意的是,函數(shù)聲明不叫變量。如果沒有實參值就是undefined。

3,尋找變量聲明,變量名作為AO對象的屬性名,值為undefined。如果變量名和形參名一樣不用管。

4 ,尋找函數(shù)聲明,函數(shù)名作為AO對象的屬性名,值為函數(shù)體,如果函數(shù)名和變量名一樣,直接覆蓋

下面我們來寫一段代碼來簡單介紹一哈函數(shù)預編譯的過程

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);

1首先在執(zhí)行fun之前會創(chuàng)建一個AO對象。

funAO{
}

2,尋找實參和形參,將形參作為AO對象的屬性名添加到對象中,值為實參,值得注意的是,函數(shù)聲明不叫變量。如果沒有實參值就是undefined。

funAO{
    a : 1,
    b : 2
}

3,尋找變量聲明,變量名作為AO對象的屬性名,值為undefined。如果變量名和形參名一樣不用管

funAO{
    a : 1,
    b : 2
}

4 ,尋找函數(shù)聲明,函數(shù)名作為AO對象的屬性名,值為函數(shù)體,如果函數(shù)名和變量名一樣,直接覆蓋

funAO{
    a : function a(){},
    b : 2
}

解釋執(zhí)行

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,因為上面函數(shù)已經(jīng)提前了
    a = 1;
    var b;
    console.log(b);//往上面的AO對象里面尋找,b的值是2。 這里就輸出2
    var b = function(){}//這里的函數(shù)為啥不能提前,因為這里的是一個函數(shù)表達式,這個函數(shù)沒有函數(shù)名所以不能提前。
    console.log(b);//這里把b賦值function(){},所以這里輸出function(){}
}
fun(1,2);

還有一種可能

function add(){
//這里的話碰到if判斷,for....除了function作用域之外的咱們都得正常分析,
//所以這里的值為undefined其實就是var a提前了賦值undefined
    console.log(a);//這里的輸出結(jié)果為?undefined
    if(a){
        var a = 10;
    }
    //這里是把a的值傳入判斷里面undefined返回的是false所以進不去,值就不會改變這里還是undefined
    console.log(a);//undefined
}
add();

這上面就是預編譯的執(zhí)行過程!

關(guān)于“javascript中預編譯指的是什么意思”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

標題名稱:javascript中預編譯指的是什么意思
地址分享:http://aaarwkj.com/article48/jesgep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、微信公眾號響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作、動態(tài)網(wǎng)站、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
亚洲欧美日韩一区二区视频| 亚洲精品国产熟女高潮| 亚洲精品a在线观看av| 中文字幕人妻熟人妻熟丝| 国产夫妻性生活国产视频| 欧美颜射一区二区三区| 亚洲人妻激情一区二区| 成人激情视频在线网页| 欧美日韩另类综合91| 三级日本一区二区三区| 国产美女直播亚洲一区色| 中文字幕一区二区三天| 少妇的诱惑免费在线播放| 国产一区二区毛多内射| 亚洲欧美日韩国产99| 婷婷激情五月国产丝袜| 免费观看亚洲视频一区二区三区| 岛国av有码高清在线观看| 亚洲理论在线观看电影| 粉嫩一区二区三区精品视频| 成人在线免费观看视频国产| 色悠悠粉嫩一区二区三区| 亚洲人成免费在线观看| 97高清视频在线观看| 欧美日韩视频一区二区| 亚洲中文字幕高清无二区| 日本人妻系列中文字幕| 人妻中文字幕在线av| 91精品国产自产在线蜜臀| 亚洲中文字幕精品一区二区三区 | 国产黄色自拍av网站| 91精品国产成人在线| 最新日本人妻中文字幕| 中文字幕国产精品一区二| 在线最新亚洲日本韩国| 精品人妻一区二区三区在线av| 99久久精品国产国产毛片| 成人午夜黄色福利视频| 国产综合一区在线观看97| 精品丝袜熟女一区二区三区| 国产自愉怕一区二区三区|