JS中,什么是閉包?閉包有什么好處?


相信網上對閉包有很多的解釋,畢竟這個玩意兒是仁者見仁智者見智,對於我來說,總結了2個特性:

1.函數嵌套函數,內部函數可以引用外部函數的參數和變量

function  aaa() {
    var a = 5;
    function bbb() {
        alert(a)
    }

    return bbb
}
var c = aaa();
c();

 

2.參數和變量不會被垃圾回收機制所收回

JS中的垃圾回收機制

  function test(){
        var a = 1;
        alert(a)
  }
  test(); // 執行完這個函數,函數里面的a就不存在了,

 

下面來扯一下閉包的好處:

1.希望變量長期駐扎在內存當中(一般函數執行完畢,變量和參數會被銷毀)

2.避免全局變量的污染

 function  aaa() {
       var a = 1;
       a++;
       alert(a)
 }

aaa(); // 2
aaa(); // 2
aaa(); // 2
上面的函數不管執行幾次,彈出的都是2,如果我們想彈出2/3/4 這樣的結果呢?就需要用到閉包

 

  function aaa() {
        var a = 1;
        return function(){
            a++;
            alert(a)
        }
    }

    var bbb = aaa();
    bbb(); // 2
    bbb(); // 3
    bbb(); // 4

    // 函數表達式的寫法
    var aaa = (function () {
        var a = 1;
        return function () {
            a++;
            alert(a)
        }
    })()

    aaa() // 2
    aaa() // 3
    aaa() // 4

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM