閉包,做用域,做用域鏈

全局變量:能夠在任何地方反覆使用的變量,但可能會形成全局污染數組

局部變量:不能夠重複使用,只在函數中使用閉包

閉包:優勢:可重用變量,又能夠保護變量不受污染的機制函數

           缺點:比通常的函數更佔用內存3d

閉包流程圖片對象

  1. 閉包準備階段

  完成外層循環調用blog

  

 

 

  1. 調用內層循環

  

 

 

  3.再次調用內層循環生命週期

 

   

 

  4.調用結束後圖片

   

 

 

 

 

做用域:變量的可用範圍內存

  1. 全局做用域window

包含全局變量作用域

  1. 局部做用域

包含局部變量,在函數體內,局部變量的優先級高於同名的全局變量。   

函數生命週期:

1. 開始執行前(生命提早階段)

 建立執行環境棧(數組):臨時保存正在執行的函數的執行環境

向執行環境中添加第一個默認程序main(),該方法建立出一個全局做用域的對象window

   

 

 

2.定義函數時

建立函數對象,封裝函數的定義

聲明函數變量,引發了函數對象,函數對象的scope屬性引用回,建立函數時的做用域

   

 

  3.調用函數時

在ECS中加入一個新的元素並記錄新函數的調用

建立一個活動對象,保存本次調用用到的局部變量

ECS中的新執行環境元素引用活動對象

活動對象中的parent屬性引用函數的scope指向副局做用域對象

(前提是活動做用域中沒有局部變量,才沿着parent向父級做用域找)

    

 

   

 

4. 調用函數後

                    執行環境棧中本次函數的執行環境出棧

                             致使活動對象被釋放,致使局變量一同釋放

   

 

   

 

做用域鏈

  右多級做用域連續引用造成的鏈式結果

            掌握一切變量的使用順序 :先在局部照,沒有則延做用域鏈向父級做用域中找

相關文章
相關標籤/搜索