全局變量:能夠在任何地方反覆使用的變量,但可能會形成全局污染數組
局部變量:不能夠重複使用,只在函數中使用閉包
閉包:優勢:可重用變量,又能夠保護變量不受污染的機制函數
缺點:比通常的函數更佔用內存3d
閉包流程圖片對象
完成外層循環調用blog
3.再次調用內層循環生命週期
4.調用結束後圖片
做用域:變量的可用範圍內存
包含全局變量作用域
包含局部變量,在函數體內,局部變量的優先級高於同名的全局變量。
函數生命週期:
1. 開始執行前(生命提早階段)
建立執行環境棧(數組):臨時保存正在執行的函數的執行環境
向執行環境中添加第一個默認程序main(),該方法建立出一個全局做用域的對象window
2.定義函數時
建立函數對象,封裝函數的定義
聲明函數變量,引發了函數對象,函數對象的scope屬性引用回,建立函數時的做用域
3.調用函數時
在ECS中加入一個新的元素並記錄新函數的調用
建立一個活動對象,保存本次調用用到的局部變量
ECS中的新執行環境元素引用活動對象
活動對象中的parent屬性引用函數的scope指向副局做用域對象
(前提是活動做用域中沒有局部變量,才沿着parent向父級做用域找)
4. 調用函數後
執行環境棧中本次函數的執行環境出棧
致使活動對象被釋放,致使局變量一同釋放
做用域鏈
右多級做用域連續引用造成的鏈式結果
掌握一切變量的使用順序 :先在局部照,沒有則延做用域鏈向父級做用域中找