fork download
  1. var foo = function () {
  2. var i, func;
  3.  
  4. i = 0;
  5. func = function () {
  6. print(++i);
  7. func = null; // null を代入しても、この関数オブジェクトから「変数i」に対する参照は切れない
  8. };
  9.  
  10. return func;
  11. };
  12.  
  13. var hoge = foo();
  14. hoge();
  15. hoge();
  16. hoge();
  17.  
  18. /*
  19.   func = null; は "func" という名前で関数オブジェクトに参照できなくなることを意味するらしい。
  20.   null を代入しても、関数オブジェクトは残り続ける。
  21.   なので、この場合は匿名関数を return した方がスマートだと思う。
  22. */
Success #stdin #stdout 0.23s 213888KB
stdin
Standard input is empty
stdout
1
2
3