質問: () => n } return funcs } ``` 諸々理解が追いついておらず質問が的を射てないかもしれませんが、何卒ご回答の程よろしくお願いします。。。。。
回答: 1番目の場合、`let`はループと別枠で存在する変数ですので、ループ構文で書き換えても特殊な動きをすることはなく、抜けきった後の3となります。 `for`の中に`let`を書いた場合、かなり特殊な動作となります。ES2017の仕様書(かなり重いです)を確認してみたところ、 1. ループの`for`文自体と、ループのブロック1回ごとがそれぞれスコープを生成する(変数宣言が`let`の場合のみ、`const`なら`for`文全体で1スコープ) 2. ループ変数の加算は、**前のループでの値を次のループのスコープにコピーしてから**行う というような動作でした。