2番目の例i
は、宣言が1回であり、各反復で宣言されていないため、確実に機能しないはずです。これは、そのカテゴリのループがどのように機能するかの関数にすぎません。
これは通常のブラウザで試すことができます。
for (var i = 0, otherVar = ""; i < [1,2,3,4].length; i += 1){
console.log(otherVar)
otherVar = "If otherVar was initialized on each iteration, then you would never read me.";
}
ループでconst
完全に禁止されているわけではありませんfor
。for
constを変更するのはそれだけです。
これらは有効です:
for(const i = 0;;){ break }
for(const i = 0; i < 10;){ break; }
これらは無効です:
for(const i = 0;;){ ++i; break; }
for(const i = 0;;++i){ if(i > 0) break; }
FirefoxがES2015仕様を読んだ後にSyntaxErrorを出す理由はわかりませんが(Mozillaの賢い人は正しいと確信していますが)、例外が発生することになっているようです。
環境レコードに、新しいが初期化されていない不変のバインディングを作成します。文字列値Nは、バインドされた名前のテキストです。Sがtrueの場合、初期化される前にバインディングの値にアクセスしようとしたり、初期化後に設定しようとすると、そのバインディングを参照する操作の厳密なモード設定に関係なく、常に例外がスローされます。Sはオプションのパラメーターで、デフォルトはfalseです。