JSFiddle - React, Tailwind, and code Playground

by yshrkn

JavaScript

function createCounter() {
  var cnt = 0;
  // returnの関数からCallオブジェクト参照されているため、
  // Callオブジェクトの情報は保持され続ける

  return function() {
    console.log(cnt++);
    // createCounter()のCallオブジェクトのcntを参照し続ける
  };
}

var counter = createCounter();
 // 通常、関数実行後、Callオブジェクトの情報は破棄されるが、
 // couterによって、createCounter()の返り値の関数を参照し続けるため、
 // createCounter()の返り値の関数の、Callオブジェクトの情報は破棄されない。
 

 counter();
  counter();
   counter();