0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ひとりJavaScriptAdvent Calendar 2024

Day 3

【JavaScript】forって何?JavaScriptのループを解説

Last updated at Posted at 2024-12-02

ループ

JavaScriptでは、繰り返し処理を行うための構文がいくつか用意されています。
forはループの代表的な構文で、主にカウンター付きループができます。

また、ほかにも以下の構文があります。

  • while: 条件を満たしている間ループ、無限ループ
  • forof: イテレーター(配列)を使ったループ

ここからは各構文の詳細を解説していきます。

for

for文は主に以下のケースで使われます。

  • 今何回目のループなのか知りたいとき
  • 数値を一定間隔で増やしたり減らしたりしたいとき

構文はこちらです。

for (初期化式; 条件式; 変化式) {
  // 処理
}

それぞれの式には役割があります。

  • 初期化式: ループ全体が始まる前に一度だけ実行される
  • 条件式: 次のループを始めていいのかチェックする
    • ===などを使って真偽値にするとわかりやすい
  • 変化式: 各ループが始まる前に実行される

例えば、1から10を足した数=55を出力するコードを書いてみます。
公式を使ってもいいのですが、ここでは順番に足す処理を書きます。

このとき、1から10を順番に処理するために、forが使えます。
それぞれの式や処理では以下のことをするようにします。

  • 初期化式: 変数index1で初期化
  • 条件式: index10以下(index <= 10)ならループを続ける
  • 変化式: indexをインクリメント(1増やす)
let sum = 0
for (let index = 1; index <= 10; index++) {
  sum += index
}

console.log(sum) // 55

このコードは以下の手順で実行されます。

  1. 初期化式が実行され、変数index1で初期化される
  2. ループに入り、sumindexの値=1が足される
  3. 条件式がチェックされ、index10以下なのでループは中断しない
  4. indexをインクリメントする=1を足す
  5. index10を超えるまで2~4を繰り返す
  6. sumの値がコンソールに出力される

条件式の書き方のコツ

条件式の書き方には、ちょっとしたコツがあります。

for文は、条件式を満たしているうちはループが継続されます。
そのため、最後のループでは条件式を満たす値indexに入っています。

条件式index <= 10を最後に満たすのはindex == 10のときなので、最後に処理が実行されるときindex10です。
このとき最初は1で最後が10なので、1から10の和が計算されます。

while

whileを使うと、条件を満たしているうちはループする処理ができます。

前述のfor文でも条件式を使えば実装できますが、そのような処理の場合whileのほうが見た目がすっきりしやすいです。

構文はこちらです。

while (条件式) {
  // 処理
}

whileは以下の用途に使えます。

  • 条件を使ったループ
  • 無限ループ

無限ループ

無限ループを実装するのは非常に簡単です。
while文の条件式にtrueを入れ、あとは適当に処理を書くだけです。

以下のコードは無限ループのサンプルです。

ブラウザで次のコードを実行した場合、最悪ブラウザを強制終了することになります。
実行は自己責任でお願いします。

while(true) {
  console.log('無限ループ')
}
// 無限に「無限ループ」が出力され続ける

なお、無限ループといえば悪なイメージがあるかもしれませんが、使うときはたまにあります。

条件を使ったループ

もちろん、条件式にちゃんとした条件を入れることもできます。

ここではフィボナッチ数列を生成するコード実装してみます。
フィボナッチ数列は前の2つの数字を足していく数列です。
この数列は無限に続くので、今回は1000以上の数字が出た時点でループを終了します。

以下は簡単に実装したものです。

const result = [1, 3] // 初期値
while (result.at(-1) < 1000) {
  result.push(result.at(-1) + result.at(-2))
}

result // [1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364]
atメソッドとは

配列のatメソッドは、インデックスを使って配列の要素を取得するものです。
result[index]と大体同じですが、atは負の数を入れることで最後から数えた要素を取り出せます。

このwhileループの中では、resultの最後から2番目と1番目の要素を足し、配列に追加しています。
そして配列の最後の要素が1000を超えた時点でループは終了します。


while(true)breakを使って実装することもできます。

const result = [1, 3] // 初期値
while (true) {
  if(result.at(-1) > 1000) break
  last.push(result.at(-1) + result.at(-2))
}

result // [1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364]

このコードでは、result.at(-1)1000を超えていたらbreakでループを終了しています。
それ以外は上と大体同じです。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?