JavaScript之先行編譯

來源:互聯網
上載者:User

標籤:請求   9.png   語言   先行編譯   結果   形參   技術   就會   簡單的   

       javascript是一種解釋性弱類型語言,在瀏覽器中執行時,瀏覽器會先預覽某段代碼進行文法分析,檢查文法的正確與否,然後再進行先行編譯,到最後才會從上往下一句一句開始執行這段代碼,簡單得來說可以表示為三個步驟: 文法分析-->先行編譯-->解釋執行;

    先插入一段代碼:

在理解先行編譯之前,我們需要首先理解函式宣告和變數賦值:先來一行代碼解釋什麼是函式宣告,

相信有一些javascript基礎的人都應該很容易理解這行代碼,這隻是簡單的聲明了一個常見函數,而變數賦值如下:

在項目開發過程中,我們經常會定義一些變數來接受傳遞過來的資料,例如在發送Ajax請求時,後台會返回給我們一些資料,我們就會定義一些變數或數組來接受資料,然後再綁定資料到Dom元素上;

在理解了什麼是函式宣告和變數賦值之後,接下來我們開始解釋先行編譯的過程,

瀏覽器在執行script代碼塊之前,會先進行先行編譯,先行編譯一般會分為以下四個步驟:

1.建立AO(Activation Object:執行期上下文)對象;

2.找出形參和變數聲明,將變數和形參名作為AO屬性名稱,值為undefined;

3.將實參值和形參統一;

4.在函數體內找出函式宣告,值賦給函數體;

最後,瀏覽器會開始解釋一行代碼執行一行代碼,如果變數在代碼塊裡被重新賦值,那它最終的值就為代碼塊重新賦給它的值,例如上面例子中,第一個console.log(a)的值為function a(){},到了下一步變數a被重新賦值,var a = 123;所以在第二個第三個console.log(a)中,a的輸出值為123,然後函數執行到var b = function (){},下面開始執行console.log(b),所以b的值為function (){};

最後,在理解了先行編譯之後,我們自然可以得出這道例題的結果:

對於先行編譯的理解,我們需要多做一些例題來加深印象,正所謂熟能生巧!

JavaScript之先行編譯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.