執行環境及範圍

來源:互聯網
上載者:User

標籤:argument   var   bsp   對象   包含   局部變數   es6   程式   屬性   

官方概念:

       執行環境定義了變數或函數有權訪問的其他資料,決定了它們各自的行為。

       每個執行環境中都有一個與之對應的變數對象,環境中定義的所有變數和函數都儲存在這個對象中

       

        關於執行環境,最外圍的執行環境就是全域執行環境,在Web瀏覽器中,全域環境預設為window對象,因此所有全域變數和函數都是作為window對象的屬性和方法建立的,

 某個執行環境的代碼執行完畢後,該環境被銷毀,該執行環境的變數和函數定義也隨之銷毀

 (全域執行環境直到應用程式退出 例如關閉網頁或瀏覽器時  才會被銷毀)

        還有一個與執行環境相關的概念是範圍鏈,範圍鏈保證了對執行環境有權訪問的所有變數和函數的有序訪問,範圍鏈的前端,始終是當前代碼執行環境所在的變數對象

如果這個環境是函數,則將其使用中的物件作為變數對象,最開始只包含一個變數。即arguments對象

範圍鏈的下一個變數對象來自包含(外部)環境,以此類推,最後一個對象是全域執行環境中的變數對象

標識符的解析是沿著範圍鏈一層層向外尋找的,找不到則報錯。

ES6 之前沒有塊級範圍 ,如if語句迴圈變數定義的 i也會被添加到當前執行環境中 ;ES6中 let解決了這個問題

for(var i = 0;i<len;i++){

}

另外 使用var聲明的變數會自動被添加到最接近的環境中,在函數內部便是函數的局部變數,

不使用var聲明,則自動被添加到全域環境中

 

tip  : 可以使用window.變數名 訪問window全域變數

      訪問局部變數比全域變數快, 所以標識符搜尋js引擎還是挺不錯的!

執行環境及範圍

聯繫我們

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