今日、JavaScript を使用すると、エラーを発生させずにこれを実行できることが (難しい方法で) わかりました。
for(var i = 0; i < 100; ++i){
/* do some stuff */
for(var i = 0; i < 200; ++i){
/* do some more stuff */
}
}
i
誤って両方のループに同じ識別子を使用しました。
JavaScript コンパイラ/インタープリタは (Java のように) エラーを生成せず、外側のループで変数を隠す別の変数を作成しません (C++ のように)。それらは同じ変数を参照するため、外側のループは 1 回だけ実行されます。
これはなぜですか?この動作は、どのような状況でも役に立ちますか?