LoginSignup
24
20

More than 5 years have passed since last update.

JS: for文パターン

Last updated at Posted at 2014-08-28

■概要

javascriptのfor文に関していくつかのパターンがあるが、data内のすべてのプロパティに対して処理を行う時、最も効率のよい方法を調べてみたのでまとめる。

■for文の引数

for文には3つの引数が設定可能です。

for文引数
for('引数1','引数2','引数3'){
   //〜処理内容〜
}

引数1: for文の開始前に実行されます。下記の様に省略可能です。
      for(;i<l;i++){}
引数2: for文内部処理の実行前に評価されます。引数2がtrueであれば、内部処理が実行されます。
引数3: for文内部処理実行後に実行されます。下記の様に省略可能です。
      for(var i=0;i<l;){ i++ }

■パターン別の比較

前提①: dataは配列とする
前提②: 対象は data 内のすべてのプロパティとする

1. 初心者向けの本によく紹介されているパターン

for①
for(var i=0;i<data.length;i++){
   //対象データへのアクセスは data[i] の様な形式
}

上記が定石として知られると思いますが、上記の場合、for文内部の処理が呼ばれるたびにl.length(data.length)の参照・取得が行われるので効率が良くないです。

2.上級者向けによく紹介されているパターン

for②
for(var i=0,l=data.length;i<l;i++){
   //対象データへのアクセスは data[i] の様な形式
}

上記の場合、for文をスタートする前に l に対して data.length を格納するので、効率がよい。

for③
for(var i=0,d;d=data[i];i++){
   //対象データへのアクセスは d のみで行える
}

上記の利点は data[i] の様な面倒な表記をせずに済む。ただ注意点としては、data[i]true であるかを評価するので、判定が false になる値がプロパティに含まれる場合には使わない方がよい。
判定が false になる値に関しては下記を参照してください。

■参考文献

http://www.w3schools.com/js/js_loop_for.asp
https://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml

24
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
20