2011年04月24日

JavaScriptでfor文のちょっと変わった書き方

JavaScriptの小ネタ。
for文にちょっと工夫を入れます。
以下のコードはごく普通のfor文です。

例1:普通のfor文
for (var i = 0; i < 3; i++) {
//何かの処理
}


for文の括弧の中は三つに分かれていて、2番目(上の例だとi < 3)はループを継続する条件です。
iが0 → 条件に当てはまるので「何かの処理」を行う。
iが1 → 条件に当てはまるので「何かの処理」を行う。
iが2 → 条件に当てはまるので「何かの処理」を行う。
iが3 → 条件に当てはまらないのでfor文を抜ける。
つまり、この例だと「i < 3」かどうかという判定を4回行うことになります。

では次のような場合はどうでしょうか?

例2:ループ継続条件を関数で持ってくるfor文
for (var i = 0; i < getCount(); i++) {
//何かの処理
}


今度は「3」ではなく「getCount()」という関数になっています。
getCount()には深い意味はなく、何かの数値を取得する関数です。
例1からわかるように、getCount()は複数回呼ばれます。
1回でいいのに、何回も呼ばれて無駄だから。

なのでこうしてみました。

例3:countを外に出したfor文
var count = getCount();
for (var i = 0; i < count; i++) {
//何かの処理
}


これでgetCount()は1回しか呼ばれないようになりました。
また、以下のような書き方もできます。

例4:ちょっと変わったfor文
for (var i = 0, count = getCount(); i < count; i++) {
//何かの処理
}


カウンター変数iの隣でついでに変数countを定義しちゃうという。

例4と同様の書き方、Javaでもできます。
Javaの場合は、変数countのスコープがfor文内に限定されるので、
例3より例4のほうがより良いです。





タグ:javascript
posted by ぺるたご at 22:21| Comment(4) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
とても魅力的な記事でした!!
また遊びにきます。
ありがとうございます!!
Posted by 履歴書の書き方 at 2011年10月01日 11:30
ありがとうございます。
今後ともよろしくお願いします。
Posted by ぺるたご at 2011年10月01日 20:27
そういうパフォーマンスを気にするときは
for (var i = getCount() - 1 ; i >= 0; --i) {
//何かの処理
}
と書くものですよ
Posted by ななし at 2012年12月27日 21:10
コメントありがとうございます。
こちらに追記しました。
http://perutago.seesaa.net/article/313327333.html
Posted by ぺるたご at 2013年01月14日 18:27
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/197575155

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。