前言:
本篇文章向大家分享一下作用域和作用域鏈,希望對大家有所幫助!
作用域:
作用域就是代碼的執行環境,全域執行環境就是全域作用域,函式的執行環境就是函式作用域(私有作用域),他們都是堆疊記憶體,全域執行環境是最外圍的執行環境,根據ECMAScript所實作的宿主環境不同,表示的執行環境的物件也不同,
在Web瀏覽器中,全域執行環境被認為是Window物件,因此所有全域變數和函式都是作為Window物件的屬性和方法創建的,在Node環境中,全域執行環境是global物件,
某個環境執行完畢完所有的代碼以后,該環境就會被銷毀,內部的變數和函式也都會被銷毀,但是全域執行環境會等到程式退出的時候才會被銷毀,每個環境都有自己的執行環境,當執行流入一個函式的時候,函式的環境就會被推入一個環境堆疊中,當函式執行完畢以后,環境彈堆疊,將控制權回傳給之前的環境,
- 私有作用域;函式內部的環境
- 全域作用域:頁面加載時候形成
- 私有變數:私有作用域的變數
- 全域變數:在全域作用域中形成的變數
作用域鏈:
代碼在一個環境中執行的時候,會創建變數物件的一個作用域鏈,用于保證對執行環境有權訪問的所有變數和函式有序訪問,作用域鏈前端始終都是當前執行的代碼所在環境的變數物件,
可以理解為一個鏈子連著一個個的作用域,當前執行環境的作用域在最前邊,然后我們如果查找一個變數的時候,就會一個一個作用域的向上查找,最終到達全域作用域,如果還沒有,就報錯,
感謝觀看,有任何問題可以評論區評論!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/23440.html
標籤:其他
