for文で配列を処理する際の継続条件式

配列を列挙して何かの処理をする場合、for...in命令を使うべきではないというのが前の記事。 配列を順に処理する最もシンプルな方法は、昔ながらのfor文である。

ところで配列をfor文で処理する例でたまにこういうコードを見かける。

let ary = [1,2,3,4,5,6,7,8,9,10];
for (let i = 0; i < ary.length; i++) {
  console.log(i + '=' + ary[i]);
}

この書き方の場合、for文の条件式の中の継続条件の指定にdata.lengthと直接書いてあり一見シンプルでよさげだが、実際はループ処理の際、その都度配列のサイズ取得をしようとするので、パフォーマンス的によろしくない。古いIE7などのレガシーブラウザでは、その影響が大きいらしい。

このようなケースでは配列のサイズはfor文の外で一回取得させるか、

let len = ary.length;
for (let i = 0; i < len; i++) {
  console.log(i + '=' + ary[i]);
}

あるいは、for文の初期化式で一回だけローカル変数に格納してしまい使うとよい。

for (let i = 0, len = ary.length; i < len; i++) {
  console.log(i + '=' + ary[i]);
}