2017-11-20 16 views
0

JavaScriptのletとvarの使い方についての記事を読んで、 "var"キーワードを使って宣言した変数(forループの中でさえ)は、だから、1つの関数で複数のforループを作ることがなぜ可能なのですか?それぞれは次のようになります。for (var i = 0; i < array.length; i++); JavaScriptはi変数を "再宣言"しても問題ありません。それが許可されている同じ変数の複数の宣言を意味し、それらが囲む機能範囲に移動してしまった、巻き上げを可能と感謝:)JavaScript letとvarの使い方

+0

JavaScriptでは、 'var'で宣言された変数を再宣言できます。 – 4castle

+0

また、変数スコープを読み上げることもできます。 – fubar

+0

@ 4castleそれは本当ではないです。あなたは今すぐ再割り当てを考えています。 'let'を使って割り当てられた変数の値を変更することはできますが、再宣言することはできません。 – Andrew

答えて

1

複雑な答えで一見小さな質問です。 varは古いメソッド宣言です。どこでも何度でも宣言することができます。 JavaScriptは気にしません。宣言は関数のコードの先頭に移動するため、宣言された変数はすべてすぐに使用できます。これは巻上げと呼ばれています。

letは、変数を宣言する新しい方法です。 constが存在しますが、今はそのことに興味がありません。 letはブロックスコープです。 letの背後にあるルールとスコープは混乱する可能性がありますが、理解して理解することは有益です。 JavaScriptの未来です。私はブログの記事hereでそれについて徹底的に話します。

2

JSはvarのための特別なケースがあります。しかし、それらは依然として同じ変数です。

function foo(){ 
for(var i=0; i<3; i++){ 
    console.log("x"); 
} 
for(var i;i<6;i++){ 
    console.log("y"); 
} 
} 

foo() 

注意が第二のループにおけるIのない初期化されていないが、それは細かい実行し、3 x及び3 yを生成する次のコードを検討します。これまでは古いブラウザでは問題になっていましたが、新しいブラウザではエラーが発生しなくなりました。

関連する問題