JavaScriptのクロージャが値を保持する仕組みがよくわかりません
javascript
1function outer(n) { 2 var cnt = n; 3 function inner() { 4 return ++cnt; 5 } 6 return inner; 7} 8 9var f = outer(0); 10console.log(f()); => 1 11console.log(f()); => 2 12console.log(f()); => 3
スコープチェーンについては理解できているはずなのですが、なぜスコープチェーンを使って値を保持することができるのでしょうか?