談談我對js中閉包的理解

柯震東他弟發表於2020-10-14

閉包是一個能夠訪問其他函式作用域的函式。

很顯然這樣的定義晦澀難懂,很多人都很難理解閉包的真正含義
那麼我們就用通俗一點的語言來解析一下什麼是閉包
我在知乎上看到一個比較有意思的回答:

在這裡插入圖片描述
由此我們可以通俗的理解為:

函式A的內部函式B,被函式A外部的一個變數引用時,就會形成一個閉包。

我們最常用到閉包的情況就是函式封裝

展示一下我在實際專案中遇到閉包的應用場景:

在這裡插入圖片描述
我們需要呼叫這個getFeedbackList方法的時候,只需要formFeedbackServics.getFeedbackList()就好啦

閉包的兩個用處是:
1.可以訪問函式內部的變數
2.讓這些變數的值一直儲存在記憶體中(同樣也正是因為這個特點會導致記憶體洩漏

解決記憶體洩漏的方式是:
將那些不需要的變數和那些垃圾回收收不走的變數賦值為null,讓垃圾回收回收走

相關文章