執行say667()后,say667()閉包內部變量會存在,而閉包內部函數的內部變量不會存在.使得Javascript的垃圾回收機制GC不會收回say667()所占用的資源,因為say667()的內部函數的執行需要依賴say667()中的變量。這是對閉包作用的非常直白的描述.?function?say667()?{
????//?Local?variable?that?ends?up?within?closure
????var?num?=?666;
????var?sayAlert?=?function()?{?alert(num);?}
????num++;
????return?sayAlert;
}
?var?sayAlert?=?say667();
?sayAlert()//執行結果應該彈出的667
#程序員每日一題#【每天一道筆試題】 什么是閉包(closure),為什么要用它?
慕課網前端學習小組
2014-11-14 17:41:07