函式的執行空間會在函式執行完畢之后銷毀
但是,一旦函式內部回傳了一個 參考資料型別,并且 在函式外部有變數接受 的情況下
那么這個函式 執行空間 就不會銷毀了
function fn() {
const obj = {
name: 'Jack',
age: 18,
gender: '男'
}
return obj
}
const o = fn()
閉包就是利用了這個函式執行空間不銷毀的邏輯
閉包概念
1、有一個 A 函式,再 A 函式內部回傳一個 B 函式;
2、再 A 函式外部有變數參考這個 B 函式;
3、B 函式內部訪問著 A 函式內部的私有變數,
以上三個條件缺一不可
閉包的特點
為什么要叫做特點,就是因為他的每一個點都是優點同時也是缺點
1、作用域空間不銷毀
優點: 因為不銷毀,變數頁不會銷毀,增加了變數的生命周期
缺點: 因為不銷毀,會一直占用記憶體,多了以后就會導致記憶體溢位
2、可以利用閉包訪問再一個函式外部訪問函式內部的變數
優點: 可以再函式外部訪問內部資料
缺點: 必須要時刻保持參考,導致函式執行堆疊不被銷毀
3、保護私有變數
優點: 可以把一些變數放在函式里面,不會污染全域
缺點: 要利用閉包函式才能訪問,不是很方便
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/190692.html
標籤:java
上一篇:SpringMVC自定義日期轉換器不起作用,報400錯誤,Failed to convert value of type xxx to required type xxx
下一篇:Web(牛腩)概念知識總結
