最近在網上查閱了很多Javascript閉包(closure)相關的資料,寫的大可能是很是的學術和專業。對於初學者來講別說理解閉包了,就連文字敘述都很難看懂。撰寫此文的目的就是用最通俗的文字揭開Javascript閉包的真實面目。
1、什麼是閉包?
「官方」的解釋是:所謂「閉包」,指的是一個擁有許多變量和綁定了這些變量的環境的表達式(一般是一個函數),於是這些變量也是該表達式的一部分。
相信不多有人能直接看懂這句話,由於他描述的太學術。我想用如何在Javascript中建立一個閉包來告訴你什麼是閉包,由於跳過閉包的建立過程直接理解閉包的定義是很是困難的。看下面這段代碼:
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
這段代
![](http://static.javashuo.com/static/loading.gif)