1. 程式人生 > 實用技巧 >js中的閉包技術

js中的閉包技術

js中的技術點------閉包

1.特點:

  • 函式巢狀函式

  • 內部的函式可以引用外部函式的引數或者變數

  • 引數和變數不會被垃圾回收機制回收,因為內部函式還在引用


function aaa(){
var a = 5;
function bbb(){
console.log(a);
}
return bbb;
}
var c = aaa(); //此時c是aaa內部return的bbb函式體,外部函式aaa已執行完畢,但是變數仍被內部函式引用,故不會釋放。
c(); //列印結果是5

2.好處:

  • 變數可以長期駐紮在記憶體之中

  • 避免全域性變數的汙染,有私有成員

看下面例子:

1、普通函式呼叫:aaa執行完畢,就回收a變數,再次執行,重新賦值計算。


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

2、閉包方式呼叫:aaa執行後,由於a變數還在被內部函式引用,故不會被回收,再次計算,在上一次的結果上進行累加。


function aaa(){
var a = 1;
return function(){
a++;
alert(a);
}
}
var c = aaa();
c(); //2
c(); //3