重複の可能性:
JavaScript変数はループの外側または内側を宣言しますか?
だから..次のスタイルを使うべきだという記事をたくさん見ました。
var i;
for(i=0;i <= 10; i++) {
// do something here
}
私はしばらくの間上記のスタイルを使用していますが、読みやすさを除いて本当に役立つのだろうかと思います。
下記と同じではないですか?
for(var i=0; i<=10; i++) {
}
重複の可能性:
JavaScript変数はループの外側または内側を宣言しますか?
だから..次のスタイルを使うべきだという記事をたくさん見ました。
var i;
for(i=0;i <= 10; i++) {
// do something here
}
私はしばらくの間上記のスタイルを使用していますが、読みやすさを除いて本当に役立つのだろうかと思います。
下記と同じではないですか?
for(var i=0; i<=10; i++) {
}
何らかの理由で(決してそうではないはずです)、関数のコンテキスト外で同じ名前でグローバル変数を宣言した場合は、違いが生じます。
var i = 'global';
function test(){
alert(i);
for(var i = 0; i < 10; i++){
//do something
}
}
test();
上記の例では、アラートが「未定義」を返していることがわかります。これは、変数定義が関数の先頭に持ち上げられているためです(関数内で宣言されている場所に関係なく)。したがって、実際には、上記は次のように解釈されます。
var i = 'global';
function test(){
var i;
alert(i);
for(i = 0; i < 10; i++){
//do something
}
}
test();
したがって、アラートは「未定義」です。最終的に、変数宣言を関数の先頭に配置する唯一の理由は、この潜在的な混乱を減らすためです。。
2つの間に有意差はありません-純粋に意見の問題です。
var
ではなく、ブロックスコープに背を向けることを忘れて依存することから発生します(存在しないため、ブロックスコープは存在しません)。