0

JavaScript で大量のオブジェクトを作成する場合、whileパフォーマンスを調整するにはループが最適なツールであることがわかりました。

次のようにループを記述すると、最高の速度が得られます。

var i = array.length
while (i--) {
  // Do stuff
}

ただし、while ループをネストする場合は、別の変数名を使用する必要があります。そうしないと、カウンターが壊れます。

var i = array1.length
while (i--) {
  var i = array2.length
  while (i--) {
    // NOPE THE COUNTER IS NOW BROKEN
  }
}

を提案する人もいますがj、最初の配列を という変数で開始し、aそこから上に移動してみませんか?

この状況でのベストプラクティスは何ですか?

delete変数をセカンダリ スコープで使用できないようにする方法はありますか?

4

2 に答える 2

1

iandの使用(深い入れ子の場合はjその後に続きます) は、多くのプログラミング言語で共有される標準的なイディオムです。k(実際、iループ変数としての使用は にまでさかのぼりますForTran )

iとを使用するjことで、コードを読む人は、これらが標準のループとループ カウンターであることに気付くはずです。使用aすると、読者は立ち止まって、「なぜそれが使用されたのか」について熟考します。

さて、あなたの質問に答えるために:

Javascript では、必要にi応じて匿名関数を使用して変数を再利用できますが、これは

  • 標準的な慣行ではない
  • アンチパターン -- 別名ダム
  • 実行が遅くなります。

--

var i = 10;
while (i--) {
  (function() {
    // New function, this is a new `i`, completely masking the original.
    var i = 20;
    while(i--) {
    }
  {();
}
于 2013-08-14T07:09:49.957 に答える