/ループでループ固有の変数を宣言するための適切な構文は何ですか?for
in
最初の2つは両方とも機能しているように見えます(そしてGoogle ClosureCompilerではフラグを立てません)が、3つ目だけがCrockfordのJSLintを通過します。コンパクトではないので、使いたくありません。
JSLintval
は、変数が不正であるか(追加しない場合var
)、宣言を移動する必要があると文句を言います。
最初または2番目のオプションに欠点はありますか?何を使うべきですか?str
(例では、が宣言された文字列であり、宣言されたオブジェクトであると想定していvals
ます)
1.宣言なし:
for(val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}
2.'for' var宣言の場合:
for(var val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}
3.ループ変数宣言の外側:
var val;
for(val in vals)
{
if(vals.hasOwnProperty(val))
{
str += val;
}
}