2011-07-05 10 views

答えて

3

いいえ、ループ内でイテレータ変数を宣言する必要はありません。また、これは完全に有効です -

var i; 

for(i=0; i<4; i++) 
    alert(i); 

jsfiddleにexample

可変スコープについてはthisセクション、MDNでは機能スコープについてはthisページを参照してください。

+0

forステートメント内で宣言する理由は、このステートメントがステートメントにスコープされているためです。あなたが声明の外側にそれを必要としない限り、それは理想的です。 for文の外側に必要な場合は、Sayemsの手法を使用する必要があります。 –

+5

@SchroedingersCat:JavaScriptにブロックスコープがありません。どこに宣言しても、変数は関数全体でアクセス可能です。 – Jon

+0

@jonそれから私はそれを取り戻す。私はC#でそれらをやっているように私はjsで仕事をする傾向があるので、あまり混乱しないで、いくつかの理由が同じであると仮定します。 –

0

ので

> function test1() { 
... for(var j=0;j<4;j++){ 
... console.log(j); 
... } 
... } 
> test1() 
0 
1 
2 
3 
> console.log(j); 
ReferenceError: j is not defined 

varvar

m-racoon:~ mkotsur$ node 
> function test() { 
... for(i=0;i<4;i++){ 
... console.log(i); 
... } 
... } 
> test(); 
0 
1 
2 
3 
> console.log(i); 
4 

がなければ、答え:はい。

0

あなたは正しいです。 forループで変数を宣言しないと、前に宣言された変数 "i"を参照しているとみなされます。変数がすでに宣言されていない場合は、エラーが発生します。 forループでイテレータを宣言することが最善です。

関連する問題