JS 中做用域

##做用域 咱們能夠理解爲代碼起做用的區域es6

JS中的做用域 有兩種,分別是全局做用域 和 私有做用域
做用域 也能夠說就是一塊棧內存瀏覽器

棧內存 存儲值類型 提供代碼的運行環境 堆內存 存儲引用數據類型函數

全局做用域:   頁面一打開就會造成一個全局做用域  一個頁面只有一個全局做用域
    私有做用域:   函數執行的時候會 造成一個私有的做用域  

    全局變量     在全局聲明的變量 叫作全局變量
    私有變量     在私有做用域聲明的變量  叫作私有變量   形參也是私有變量 

    上級做用域   外層做用域:查找規律,上級做用域是誰,就看這個函數是在哪一個做用域聲明定義的
                  對於私有做用域中的某些變量      若沒有在私有做用域中聲明過,那麼函數執行時就會去上級做用域查找該變量    上級做用域若沒有該變量  則 接着向上級查找,
                  直到查找到全局做用域 若仍沒有 則報錯:
    做用域鏈:     變量的查找機制    一直向上級做用域查找


    函數執行的過程  也能夠這樣理解
       先開闢一個私有做用域(棧內存),形參賦值,而後變量提高   而後代碼從上向下執行,
       私有變量有:   形參  私有做用域中聲明過的變量   其餘的變量都是上級做用域的,
       暫時性時區   在let 和const以前 不能使用他們聲明的任何變量

    es6 針對 let和 const 聲明的變量  多了一個塊級做用域({}),   理解成一個私有做用域便可 
    
    
堆內存的銷燬 
用谷歌瀏覽器爲例子; 會按期的查看整個堆內存   把沒有被引用的堆內存銷燬掉 (回收)
    
    棧內存的銷燬 
          全局做用域對應的棧內存:關閉頁面的時候纔會被銷燬
          私有做用域對應的棧內存:通常狀況下 函數執行完成  對應的棧內存就會被銷燬
              當返回值是個引用數據類型時 不會被銷燬 
複製代碼
相關文章
相關標籤/搜索