1

簡単なJSコードを試していました。グローバル変数の宣言を避けるためvarに、キーワードを使用してループ内でループ変数を宣言する必要があることに気付きました。forただし、ループの実行後にもループ変数が存在することに気付きました。

var a = [1, 2, 3, 4, 5, 6];
for (var i = 0; i < a.length; i++)
    document.write(a[i]); //123456
document.write(i);  //6

forこれは、オブジェクト指向の概念におけるループのループ変数の動作とはインラインではありません (実際、インラインである必要はありません) 。JavaScript と OO 言語を比較するべきではないことはわかっています。ただし、オブジェクト指向言語での動作の方が優れていると推測しています。

このコードをタグに直接入れると、<script>実際にはループ変数がグローバルスコープに追加されますが、これは望ましくありません。そうですか?または私はそれを間違った方法で考えていますか?

明示的な関数スコープを作成することで、このような動作を実現できます。

var a1 = [1, 2, 3, 4, 5, 6];
(function () {
    for (var i1 = 0; i1 < a.length; i1++)
        document.write(a[i1]); //123456
})();

document.write(i1);  //undefined

しかし、それは標準的な方法ですか/本番環境でフォローされていますか? 他に何ができますか?

4

3 に答える 3