JS範圍1

來源:互聯網
上載者:User

標籤:儲存   變數的儲存   編譯原理   修改   問題   集合   建立   詞法分析   嵌套   

-##1.什麼是範圍##

任何一個程式設計語言都可以儲存變數,並對變數的值進行修改,但是如何引入變數是一個問題,變數儲存在哪裡  如何找到變數。

為了更好的讓我們找到這些變數的儲存位置,和如何讓程式找到變數,我們建立了一系列的規則,這些規則則被我們稱為範圍;

###1.1 編譯原理###

每一條代碼執行前都會經曆三個步驟 

    1. 分詞/詞法分析
    2. 解析/文法分析
    3. 代碼產生


**分詞/詞法分析**

這個過程將會把字元組成的字串代碼分解為有意義的代碼塊,這些代碼塊我們稱之為詞法單元,例如:

    var a = 2;

這段代碼將會被分解為 var、a、=、2、;。空格能否被當成詞法單元取決於空格在代碼中是否有意義;

**解析/文法單元**

這個過程則是將詞法單元的集合變為一個由元素逐級嵌套組成的符合文法規則的樹(我們稱這個樹為抽象文法樹,簡稱為AST),例如

          var
         /
        x
       /
      =
     /
    2

**代碼產生**

這個過程則是將我們所解析的樹轉化為可執行檔代碼,拋開各種語言的不同和平台不同,簡單的來說就是將var a = 2的抽象文法樹變為機器可讀的指令,讓機器建立一個a變數,並賦值為2;

**重點**

與其它的語言不同,js的代碼並沒有耗費大量的時間進行最佳化,因為js的編譯並不是提前執行的,大部分的情況下代碼的編譯時間處於代碼執行的前非常小的時間段內(幾微秒甚至更短的時間內),所以任何js代碼都會在執行前進行編譯,而且通常都會在編譯之後立刻執行

JS範圍1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.