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();