JavaScriptには機能スコープしかありません。したがって、forループで宣言された変数は、関数全体で表示されます。例えば複数のforループで宣言された変数を処理するための最も慣用的な方法は何ですか?
、
function foo() {
for(var i = 0; i < n; i++) {
// Do something
}
// i is still in scope here
}
我々はforループの複数を持っている場合は、これは我々がループのために、これらの他の変数をどのように処理するかの質問を開きます。
別の変数を使用していますか?
for(var i = 0; i < n; i++) { }
for(var j = 0; j < n; j++) { }
同じ変数を使用していますが、宣言する代わりに値を割り当てるだけですか?
for(var i = 0; i < n; i++) { }
for(i = 0; i < n; i++) { }
またはループのi
外を宣言?
var i;
for(i = 0; i < n; i++) { }
for(i = 0; i < n; i++) { }
またはi
を再宣言してください。
for(var i = 0; i < n; i++) { }
for(var i = 0; i < n; i++) { }
これらのすべての作業(または少なくとも私のブラウザの最新バージョンを使用しています)。しかし、JSHintは最後のアプローチを好まない。
最も慣れ親しんでいるか、そうでなければ好ましいアプローチがありますか?
最後の2つのいずれかを使用します。私はJSHintの苦情にもかかわらず、最後のものが好きです。私がそれを沈黙させなければならなかったら、私は前のものを使います。 – Barmar
記録のために、JavaScriptはブロックスコープを獲得しています。だから、今後も['for(let i ... ...)'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let)、これは 'i'をループのローカルとして宣言します。 –
私は両方のループの外側で一度 'i'を宣言することを好みます(関数の先頭に必ずしもある必要はありません - 一行にすべてを置く/カンマで区切ってください)。しかし、あまりにも多くの機能が必要なのでしょうか? – Ryan