javascript系列之執行內容

來源:互聯網
上載者:User

  寫在前面:一 直想系統的總結一下學過的javascript知識,喜歡這門語言也熱愛這門語言。未來想從事前端方面的工作,提前把自己的知識梳理一下。前面寫了些 DOM的知識,略覺水平有限。沒幾個月就要開赴找工作的前線,奈何自己還是個菜鳥,具體寫的時候還沒有一個完整的思路。多番考慮之後,決定還是翻譯外國的 經典系列文章,總結提升的同時,英語水平也可以上一個台階,雙管齊下,相信對以後肯定有好處。當然這個系列的文章已經有好多人翻譯過了,水平都挺高(我翻 譯過之後參考了一些語句,在此感謝前輩)。要是你覺得我的很爛,還望輕拍磚。實在看不下去的,請繞行,重了會傷害我幼小的心靈的哦。   引言     本文將會談到ECMAScript的執行內容(譯者註:或者執行環境)和與此相關的各類型的可執行代碼      每當控制器跳轉到ECMAScript的執行代碼中時,控制器也就進入了一個執行內容。      執行內容(EC):ECMA-262用來定義一段可執行代碼的典型性和差異性的抽象概念。      標準文檔沒有從技術實現的角度準確定義EC的結構和類型。這應該是ECMAScript引擎在具體實現時考慮的問題。      邏輯上,一個動態執行內容的集合形成了一個堆棧,棧的底部一般是全域執行內容,頂部--當前(活動)執行內容。通過壓入(push)和推出(pop)各種執行內容來修改這個棧. 可執行代碼     可執行代碼是一個與執行內容這個抽象概念相聯絡的概念,在談到可執行代碼的同時,可能也就意味著一個執行內容。      例如,我們定義一個執行內容堆棧為一個數組 ECStack=[] 每當進入一個函數(即使是遞迴調用的函數或者是建構函式),這個堆棧就壓入一個新的執行內容,嵌入的eval函數也是一樣的。 全域代碼     這種代碼在“程式層面”中執行:例如外部載入的js檔案或者是本地內聯代碼(在<script></script>標籤裡)。全域代碼不包含存在於函數體內的任何代碼。初始化時(程式開始),ECStack如下: 1 ECStack=[globalContext];  函數程式碼片段     當進入函數體(所有的函數),ECStack堆棧中壓入了新的元素。必須要注意的是具體函數代碼不包含它的內建函式程式碼片段。例如,我們調用一個遞迴調用自身的函數: 複製代碼1 (function foo(flag){2     if(flag){3         return;4     }5     foo(true);6 })(false)複製代碼然後,ECStack堆棧修正如下: 複製代碼1 //首先執行外部foo函數時2 ECStack=[3 <foo>functionContext4 globalContext]5 //遞迴執行內部foo函數時6 ECStack=[7 <foo>functionContext-遞迴foo8 <foo>functionContext9 globalContext]複製代碼     當存在於當前執行內容的函數返回時,ECStack彈出相應的執行內容,這樣連續的自上而下的執行,棧指標也不斷移動,這是一個典型的堆棧實現方式。當相關段代碼執行完以後,ECStack只包括全域上下文(global context),直到整個應用程式結束。一個被拋出但是沒有被截獲的異常,同樣存在一個或多個執行內容。 eval代碼      (譯者註:大量資深學者提出盡量不使用eval,而且此部分價值不大。減少閱讀量,故不翻譯)      這一小部分理論在未來進一步分析與執行內容相關的一些細節問題,比如變數對象,範圍鏈時是很需要的。這些理論將在相關章節中提到。 

聯繫我們

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