私はES6の背後でループがどのように動作するのか興味があります。forループのconst内のES6の内部
これはLET 5つの新しいスコープが作成され、機能がそれらの対応する範囲にバインドされているので、各関数が(0〜4)適切なI値を取得する理由は
var funcs = [];
for (let i = 0; i < 5; i++) {
funcs.push(function() {
console.log(i);
});
};
基本的な例です。それは私が思うもので、それは私にとって最も理にかなっています。そうであれば、const宣言(i)が5つの新しいスコープを作成する必要があり、const変数がさまざまなスコープで幸せに生きる必要があるため、なぜそれが失敗するのかは理解できません。 同じ効果を達成するためにIIFEを使用する前に、基本的には関数の新しいスコープを作成し、裏で同じことをやっていると思いました。
上記のステートメントが正しくない場合は、ループ内のループが1つのスコープを作成しているに違いありませんが、var宣言とどのように機能が異なるかがわかりません。さらに明確にするために、letがforループによって作成された1つの新しいスコープにバインドされていて、var宣言がこの場合グローバルスコープに持ち込まれていますが、これもまだ有効なスコープです。
誰でもこのトピックについて少し意見を共有できますか?
'i'を定数として定義すると、' i + = 1'を実行するとコードが失敗します。そうではありませんか? –
よく 'const i'は' i ++ 'がそれを修正しようとするので動作しません – Bergi
@BergiしかしOPにはポイントがあります。全ての 'i'が新しいスコープ内でインクリメントされた値に束縛されているのではありませんか? – ftor