---
# System prepended metadata

title: 閉包
tags: [javaScript]

---

# 閉包
https://www.bilibili.com/video/BV1YJ411R7ap?p=13&spm_id_from=pageDriver

## 基本應用
當你這function外部有用到
裡面的東西會一直存在
所以你重複調用
裡面東西會累加
![](https://i.imgur.com/NLBXDwx.png)

因為他是同一個
你看如果有不同個
![](https://i.imgur.com/iP18gAj.png)

記住 調用會產生新的內存
原因你覆value了
雖然你function跑完要毀掉
但你給複value所以他不能銷毀
不然你a就沒值了

## 重點
你return的function會包含你的function跟變數
![](https://i.imgur.com/XxDwywM.png)
記住有被引用就不刪

## 實際應用

![](https://i.imgur.com/lB7adbE.png)

簡化成
![](https://i.imgur.com/qLdbJu7.png)
v是外面index的


Higher Order Functions
https://www.youtube.com/watch?v=d919Cwhb-14
![](https://i.imgur.com/r1dtlvN.png)

工廠模式 先建立顏色再來文字
跟兩參數差別 可以減少參數我個人也比較喜歡這個


https://www.youtube.com/watch?v=8SwyEjmzFZw&ab_channel=Acadea.io
保持靈活性
![](https://i.imgur.com/2t3NpAz.png)

不一樣的邏輯能用斃包來自定義
###### tags: `javaScript`