爲什麼閉包這個概念看的七暈八素
- 閉包概念中的一些專業名詞概念不清晰
- 作用域鏈:本質是一個指向變量對象的指針列表。函數的作用域鏈在函數調用完成後即被銷燬。
- 變量對象:
- 全局變量對象(js運行時一直存在)。
- 活動變量對象(局部變量對象,函數執行完畢後銷燬)。函數在調用時創建本地的活動對象加上函數定義時預創建的作用域鏈,形成一個新的用於執行函數的作用域鏈。
- 閉包的定義不清晰
- 函數定義時的作用域鏈到函數調用時仍然有效
- 有權訪問另一個函數作用域中變量的函數
- 閉包帶來的影響
- 閉包會影響到內存的佔用
- dom對象的循環引用
作用域
- 函數作用域根據函數定義時確定。
- this關鍵字指向根據函數
作用域鏈
- 定義: 函數調用時新建對象存儲變量對象
- 每次調用函數時,都會創建一個新的作用域鏈