js閉包計數器及閉包的思考

//定義自增計數器,初始值是0,步長是1
var add = (function(){
  var counter =0;
  return function () {counter += 1; return counter;}
})();

//調用,每次自增1
add(); //值爲1
add(); //值爲2
add(); //值爲3

 

  爲何只有第一次調用add()時會初始化counter的值呢?思考良久,對比c#裏面的類,以爲應該是這樣的:
  第一次執行add()時,無實例,而後就會初始化,而之後再執行add()時,已經有了實例了,只是執行默認的返回函數。
  不必定對,不過應該有助於記憶。

 

若對您有用,請贊助個棒棒糖~c#

相關文章
相關標籤/搜索