1. 程式人生 > >玩轉js閉包

玩轉js閉包

閒逛SegmentFault看到一個例子:
function foo () {
	var local = 1
	function bar() {
		local++
		return local
	}
	return bar
}
var func = foo()
func()

在Chrome除錯工具裡貼上上述程式碼,輸出是2。

沒錯,其實這是一個閉包。

由於js是函式作用域的緣故,local可以看做foo函式裡面的一個區域性變數,供bar函式呼叫,二者構成一個閉包。

執行到“var func = foo()”這行,獲取這個閉包(可以理解成一個返回local++值的函式),然後執行到“func()”這行,執行這個閉包,返回local++後的值,也就是2。