js |閉包

1、閉包是什麼?

閉包是指那些引用了另一個函數作用域中變量的函數,通常是在嵌套函數中實現的。(函數套函數)

function fn() {
    let n = 123;
  }
console.log(n); //此時會報錯 n is not defined 
function fn() {
      let n = 123;
      return function() {
            console.log(n)
      }
}
console.log(fn()); //此時控制檯會返回一個匿名函數;如下圖:

這個被return返回的匿名函數就是閉包。

2、閉包的功能

1.在函數外訪問函數內的值

function fn() {
      let n = 123;
      return function() {
            console.log(n)
      }
}
let f = fn()
f();

此時就可以在函數外部獲得n的值。(延長了變量的生命週期)

2.保持使用不被垃圾回收

=>如果有被使用會保持佔用內存,如果沒有引用會被清理掉。

3、閉包可能造成的問題及解決方法

問題:閉包可能會造成內存泄漏

解決方法:在推出函數前將不使用的變量賦值爲null

4、所有的函數都是閉包,因爲都是window對象的屬性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章