1. 程式人生 > >談談對閉包的理解

談談對閉包的理解

function a(){
	var i=0;
	function b(){
		console.log(i++)
	}
	return b;
}
var c=a();//這裡執行了函式a,返回函式b,因此c為函式b
c();//0,這裡呼叫了函式b
c();//1,因為i仍然儲存在a中,而函式b保持著對i的引用,因此i在記憶體中的棧去依然保留

使用閉包主要是為了設計私有的方法和變數。
優點:可以避免全域性變數的汙染
缺點:閉包會常駐記憶體,會增大記憶體使用量,使用不當容易造成記憶體洩漏。

特點:

  1. 函式巢狀函式
  2. 裡邊的函式可以使用外部的引數和變數
  3. 引數和變數不會被垃圾回收機制回收