Amazon 数量限定タイムセール開催中

【ES6】JavaScript:for文の書き方

【ES6】JavaScript:for文の書き方

このページでは、JavaScriptでよく使われるfor文の書き方や注意点などを、初心者の方にも分かりやすく解説しています。

基本的な書き方から応用まで、しっかり学べる内容になっていますのでよければ参考にしてみてください。

ノーノちゃん

for文の解説サイトとか見たことあるけどまったく意味が分からなかったよ…。
大丈夫ですよ!このページでは、for文のコードの流れや意味をひとつずつ解説していますので、理解しやすいかと思います。

ぶたさん

1. JavaScript for文とは?

JavaScript for文とは?

まずはじめにJavaScriptのfor文について解説します。

同じような処理をくり返す

for文とは「同じような処理を何度もくり返したい」というときに使うものです。

たとえば「1から7までの数字を順番に表示したい」という場合、通常は次のように同じようなコードを並べて書きますよね。

js
コピー 拡大
console.log(1);
console.log(2);
console.log(3);
console.log(4);
console.log(5);
console.log(6);
console.log(7);
コンソール(実行結果)
コピー 拡大
1
2
3
4
5
6
7

この書き方でも問題ありませんが、数が増えるとコードが長くなってしまうというデメリットがあります。

こういったときfor文を使えば、次のようにたった数行のコードを書くだけで済みます。

js
コピー 拡大
for (let i = 1; i < 8; i++) {
  console.log(i);
}
コンソール(実行結果)
コピー 拡大
1
2
3
4
5
6
7

このようにfor文を使えば、本来なら同じようなコードを何行も書かなければならないところを、たった数行で済ませることができます。

プログラミングにおいて、シンプルで見やすく、無駄のないコードを書くことがとても重要です。

for文はその第一歩ともいえる基本的な構文なので、しっかりと覚えておきましょう。

ノーノちゃん

コードが短くなるのはいいけど、書くのが難しそうだよ。
最初は難しく感じますが、基礎的なパターンさえ覚えてしまえば楽に書けるようになります。

ぶたさん

基本的な書き方

for文の基本的な書き方
部分 コード例 意味
初期値 let i = 1 ループ処理を開始する際の最初の値
条件式 1 < 5 ループ処理がいつ終わるかを決める
増減値 i++ 増やし方・減らし方
(くり返すごとにどれだけ数が増えるか、減るかを設定)
処理内容 console.log() ループしたい処理を書く

 
for文の基本的な書き方は、()の中に3つの引数(初期値、条件式、増減値)を書きます。

そのあと、{}の中にループしたい処理内容を書けば完成です。

ノーノちゃん

条件式で使ってる記号はどういう意味なの?
条件式で使っている記号は「比較演算記号」と呼ばれる文字列や数値を比較するための記号です。詳しくは次の項目で解説しますね。

ぶたさん

for文で使う記号

記号 意味
> 左が右より大きい 5 > 3
< 右が左より大きい 3 < 5
>= 左が右より大きい
(または同じ)
5 >= 3
< = 右が左より大きい
(または同じ)
3 < = 5
== 左と右の値が同じ i == 5
=== 左と右の値と種類が同じ i === 5
!= 左と右の値が同じでない i != 5
!== 左と右の値と種類が同じでない i !== 5
補足
比較演算子は「数値、文字列、変数など」すべてに使うことができます。
js
コピー 拡大
1 < 5 // 数字の大きさで比較
a < b // アルファベット順で比較
あ < い // あいうえお順で比較

ノーノちゃん

i5なんてどう比較するの?
この場合は変数iの中に入っている数値と、数値の5を比較しています。

ぶたさん

2. for文の書き方(基礎編)

for文の書き方(基礎編)

ここではJavaScriptのfor文の書き方を詳しく解説しています。

基本的な構文の書き方や、実際にfor文を使ったコード例も紹介しているので、ぜひ参考にしてください。

for文(基本形)

JavaScript for文(基本形)
「for文」の基本形は、指定された回数だけくり返し処理したいときに使います。

コードの書き方

js
コピー 拡大
for (初期値; 条件式; 増減値) {
  // 処理内容
}

コードの例と解説

js
コピー 拡大
for (let i = 1; i < 5; i++) {
  console.log(i);
}
コンソール(実行結果)
コピー 拡大
1
2
3
4
5
  1. for (let i = 1; i < 5; i++)
    「i」という名前の変数をつくり、その中に初期値の1を入れる。「i」が「5」より小さい間だけ繰り返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  2. console.log(i);
    変数「i」の中身をコンソール画面に表示する。
js
コピー 拡大
for (let i = 1; i < 5; i++) {
  console.log(i);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
1 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
i < 5 条件式 i5未満の間は処理を繰り返す
++ インクリメント
演算子
1ずつ増やす
{} ブロック
スコープ
{}内にくり返したい処理を書く

for…in文(オブジェクトを処理)

JavaScript for…in文(オブジェクトを処理)
「for…in文」は、オブジェクトの中身を取り出して、先頭から順にひとつずつ処理したいときに使います。

コードの書き方

js
コピー 拡大
const オブジェクト名 = {
  キー: 値, 
  キー: 値,
};

for(let 変数名 in オブジェクト名) {
 // 処理内容
}

コードの例と解説

js
コピー 拡大
const person = {
  name: "たろう",     // キー: 値
  age: 20,           // キー: 値
  job: "エンジニア"   // キー: 値
};

for (let key in person) {
  console.log(`${key}: ${person[key]}`); // 処理内容
}
コンソール(実行結果)
コピー 拡大
name: たろう
age: 20
job: エンジニア
  1. const person = {...};
    「person」という名前の変数を作り、オブジェクト{}の中に「キー」と「値」を入れる。
  2. for (let key in person)
    「person」の中にある「キー(name, age, job)」を1つずつ取り出して、「key」という変数に入れる繰り返しを始める。
  3. console.log(`${key}: ${person[key]}`);
    取り出したキー(key)と、その中の値(person[key])をコンソール画面に表示する。

【オブジェクトのコード】

js
コピー 拡大
const person = {
  name: "たろう",     // プロパティ(キー + 値)
  age: 20,           // プロパティ (キー + 値)
  job: "エンジニア"   // プロパティ(キー + 値)
};
コード 種別 意味
const 変数宣言
キーワード
変更できない変数(箱)を作る宣言
person 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
{} オブジェクト 引き出し付きの箱
(複数のデータを1つにまとめたもの)
name: "たろう"
age: 20
job: "エンジニア"
プロパティ 引き出しの名前(ラベル)
name
age
job
キー 引き出し
たろう
20
エンジニア
引き出しの中のデータ
"" 囲い記号 囲まれたものを文字列として扱う
, カンマ演算子 左から順に実行して最後だけ使う
; 区切り記号 文末につける記号

【for文のコード】

js
コピー 拡大
for (let key in person) {
  console.log(`${key}: ${person[key]}`);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
key 変数名 変数(箱)の名前
in 演算子 オブジェクトの中のキーを順番に取り出す
person 変数
(オブジェクト)
変数personの中にあるオブジェクト
{} ブロック
スコープ
{}内にくり返したい処理を書く
console.log() 出力命令 ()の中身をコンソールに表示
`` テンプレート
リテラル記号
文字列の始まりと終わりを示す
${key} プレース
ホルダ
keyという変数の中身を入れる
${person[key]} プレース
ホルダ
keyという変数の中身にあるデータを入れる
 

for…in文についてもっと知りたい方はこちらをご覧ください。
【ES6】JavaScript:for...in文とは?書き方を解説!【ES6】JavaScript:for…in文とは?書き方を解説!

for…of文(配列などを順番に処理)

JavaScript for…of文(配列などを順番に処理)
「for…of文」は、配列などの中からひとつずつ順番に取り出して処理したいときに使います。

コードの書き方

js
コピー 拡大
const 配列名 = ["配列1", "配列2", "配列3"];

for (const 変数名 of 配列名) {
  // 処理内容
}

コードの例と解説

js
コピー 拡大
const fruits = ["りんご", "みかん", "バナナ"];

for (const basket of fruits) {
  console.log(basket); // 処理内容
}
コンソール(実行結果)
コピー 拡大
りんご
みかん
バナナ
  1. const fruits = ["りんご", "みかん", "バナナ"];
    「fruits」という名前の変数を作り、配列リテラル[ ]にりんご、みかん、バナナを入れる。
  2. for (const basket of fruits)
    変数「fruits」の中にある配列[“りんご”, “みかん”, “バナナ”]を1つずつ取り出して、「basket」という変数に入れる繰り返しを始める。
  3. console.log(basket);
    変数「basket」の中身をコンソール画面に表示する。
【配列のコード】
js
コピー 拡大
const fruits = ["りんご", "みかん", "バナナ"];
コード 種別 意味
const 変数宣言
キーワード
中身を変更できない変数(箱)を作る宣言
fruits 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
[] 配列リテラル 配列。複数のデータを1つにまとめられる箱
"りんご"
"みかん"
"バナナ"
文字列 配列に入っているデータ
; 区切り記号 文末につける記号

【for文のコード】

js
コピー 拡大
for (const basket of fruits) {
  console.log(basket);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分
const 変数宣言
キーワード
中身を変更できない変数(箱)を作るという宣言
basket 変数名 1個ずつ取り出した果物が入る箱の名前
of 演算子 〜の中から順番に取り出す
fruits 変数 取り出す対象
「りんご,みかん,バナナ」の入った配列
{} ブロック
スコープ
{}内にくり返したい処理を書く
console.log() 出力命令 ()の中身をコンソールに表示
 

for…of文について詳しく知りたい方はこちらをご覧ください。
【ES6】JavaScript:for…of文とは?使えないときの対処法【ES6】JavaScript:for…of文とは?使えないときの対処法

forEach文(配列を処理)

JavaScript forEach文(配列を処理)
「forEach文」は配列の中身を順番に取り出して、同じ処理を繰り返ししたいときに使います。

コードの書き方

js
コピー 拡大
const 配列名 = ["値1", "値2", "値3"];

配列名.forEach(function(変数名) {
  // 処理内容
});

コードの例と解説

js
コピー 拡大
const snacks = ["チョコ", "ポテチ", "クッキー"];

snacks.forEach(function(basket) {
  console.log(basket);
});
コンソール(実行結果)
コピー 拡大
チョコ
ポテチ
クッキー
  1. const snacks = ["チョコ", "ポテチ", "クッキー"];
    「snacks」という名前の変数を作り、配列 [“チョコ”, “ポテチ”, “クッキー”] を入れる。
  2. snacks.forEach(function(basket)
    配列「snacks」の中身を1つずつ取り出して、「basket」という名前の変数に入れる。
  3. console.log(basket);
    変数「basket」の中身をコンソール画面に表示する。
【配列のコード】
js
コピー 拡大
const snacks = ["チョコ", "ポテチ", "クッキー"];
コード 種別 意味
const 変数宣言
キーワード
中身を変更できない変数(箱)を作る宣言
snacks 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
[] 配列リテラル 配列。複数のデータを1つにまとめられる箱
"チョコ"
"ポテチ"
"クッキー"
文字列 配列に入っているデータ
; 区切り記号 文末につける記号

【for文のコード】

js
コピー 拡大
for (const basket of fruits) {
  console.log(basket);
}
コード 種別 意味
snacks 変数名 繰り返し処理の対象の変数(配列)
forEach 制御構文 配列の中身を1つずつ取り出して、指定した処理をくり返す
() カッコ for文の制御部分
function(basket) 関数定義
キーワード
取り出したデータを受け取って処理をする関数(ここでbasketに1つずつお菓子が入る)
{} ブロック
スコープ
{}内にくり返したい処理を書く
console.log() 出力命令 ()の中身をコンソールに表示

3. for文の書き方(応用編)

JavaScript for文の書き方(応用編)

ここでは、JavaScriptのfor文を応用した使い方をご紹介しています。

for文とif文を組み合わせ

JavaScript for文とif文を組み合わせ
for文とif文は組み合わせて使うことができます。

コードの書き方

js
コピー 拡大
for (初期値; 条件式; 増減値) {
  if (条件) {
   //処理内容
  }
}

コードの例と解説

たとえば、1〜8の数字から偶数だけを抽出して表示したいという場合、以下のようにfor文とif文を組み合わせて書きます。

js
コピー 拡大
for (let i = 1; i < 9; i++) {
  if (i % 2 === 0) {
    console.log(`${i} は偶数です`);
  }
}
コンソール(実行結果)
コピー 拡大
2 は偶数です
4 は偶数です
6 は偶数です
8 は偶数です
  1. for (let i = 1; i < 9; i++)
    i」という名前の変数をつくり、その中に初期値の1を入れる。「i」が「9」より小さい間だけ繰り返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  2. if (i % 2 === 0)
    「i」を2で割ったとき余りが0になるものをチェックする。(偶数かチェックする)
  3. console.log(`${i} は偶数です`);
    先ほど処理した変数「i」の中身と、「は偶数です」という文字列をまとめてコンソール画面に表示する。
js
コピー 拡大
for (let i = 1; i < 9; i++) {
  if (i % 2 === 0) {
    console.log(`${i} は偶数です`);
  }
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
1 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
i < 9 条件式 i6未満の間は処理を繰り返す
i++ インクリメント
演算子
iの値を1ずつ増やす
if 制御構文 「もし〇〇だったらこうする」と判断する命令
=== 厳密等価
演算子
中身が等しい(同値、同種類)かチェックする
i % 2 === 0 条件式 iが偶数かどうかをチェック
`` テンプレート
リテラル
変数を文字の中に埋めこむ時などに使う
${} プレース
ホルダ
{}内に変数や式を入れるよ」という合図
は偶数です 文字列 ただの文字
console.log() 出力命令 ()の中身をコンソールに表示

for文で配列に格納する

JavaScript for文で配列に格納する
for文を使えば、繰り返し処理で配列にデータを追加することができます。

コードの書き方

js
コピー 拡大
const 配列名 = []; // 空の配列を作成

for (初期値; 条件式; 増減値) {
  配列名.push(変数名);
}

//処理内容

コードの例と解説

たとえば、0から4までの数字を配列に追加したいという場合、以下のように書きます。

js
コピー 拡大
const array = []; // 空の配列を作成

for (let i = 0; i < 5; i++) {
  array.push(i);
}

console.log(array); //処理内容
コンソール(実行結果)
コピー 拡大
[0, 1, 2, 3, 4]
  1. const array = [];
    「array」という中身が空の変数を作る。
  2. for (let i = 0; i < 5; i++)
    「i」という名前の変数をつくり、その中に初期値の0を入れる。「i」が「5」より小さい間だけ繰り返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  3. array.push(i);
    「i」の値を配列「array」に追加していく。
  4. console.log(array)
    配列「array」の中身をコンソール画面に表示する。
js
コピー 拡大
const array = []; // 空の配列を用意

for (let i = 0; i < 5; i++) {
  array.push(i);
}

console.log(array);
コード 種別 意味
const 変数宣言
キーワード
中身を変更できない変数(箱)を作る宣言
array 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
[] 配列リテラル 配列。複数のデータを1つにまとめられる箱
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
0 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
i < 5 条件式 i6未満の間は処理を繰り返す
i++ インクリメント
演算子
iの値を1ずつ増やす
array.push(i) 配列メソッド 配列arrayiの値を追加する
console.log() 出力命令 ()の中身をコンソールに表示

lengthを使って配列を処理

JavaScript lengthを使って配列を処理
lengthを使って配列をくり返し処理する方法です。
length(レングス) は、主に文字列の文字数や、配列の中にあるデータの数を取得するためのものです。

たとえば、次のように変数aに入っている文字列「おはよう」の文字数を知りたいときに使います。

js
コピー 拡大
const a = "おはよう"

console.log(s.length)
コンソール(実行結果)
コピー 拡大
4

このlengthとfor文と組み合わせることで、配列の中身を順番に取り出すことができます。

コードの書き方

js
コピー 拡大
const 配列名 = [値1, 値2, 値3];

for (初期値; 条件式; 配列名.length; 増減値) {
  // 処理内容
}

コードの例と解説

js
コピー 拡大
const colors = ["赤色", "青色", "黄色"];

for (let i = 0; i < colors.length; i++) {
  console.log(colors[i]); // 処理内容
}
コンソール(実行結果)
コピー 拡大
赤色
青色
黄色
  1. const colors = ["赤色", "青色", "黄色"];
    「colors」という名前の変数を作り、配列 ["赤色", "青色", "黄色"] を入れる。
  2. for (let i = 0; i < colors.length; i++)
    「i」という名前の変数をつくり、その中に初期値の0を入れる。「i」が配列の数より小さい間だけくり返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  3. console.log(basket);
    配列「colors」の中身を順番にコンソール画面に表示する。
【配列のコード】
js
コピー 拡大
const colors = ["赤色", "青色", "黄色"];
コード 種別 意味
const 変数宣言
キーワード
中身を変更できない変数(箱)を作る宣言
colors 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
[] 配列リテラル 配列。複数のデータを1つにまとめられる箱
"赤色"
"青色"
"黄色"
文字列 配列に入っているデータ
; 区切り記号 文末につける記号

【for文のコード】

js
コピー 拡大
for (let i = 0; i < colors.length; i++) {
  console.log(colors[i]);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
1 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
colors.length プロパティ
参照
配列colorsの中のデータの数(ここでは3)を取得
i++ インクリメント
演算子
iの値を1ずつ増やす
colors[i] 制御構文 配列colorsの中のi番目のデータを取り出す
console.log() 出力命令 ()の中身をコンソールに表示

4. for文の書き方(処理を抜ける)

JavaScript for文の書き方(処理を抜ける)

for文を使用していると次のような状況になることがありますよね。

  • 「途中でループ処理を抜けたい」
  • 「特定の回だけループ処理をスキップしたい」

ここでは、こういったfor文によるループ処理を抜ける、またはスキップする方法をご紹介しています。

ノーノちゃん

「ループ処理を抜ける」ってどういう意味なの?
ループ処理を終了させることです。分かりやすくたとえると「飲み会を抜ける」と同じような意味合いです。

ぶたさん

break(途中で処理を抜ける)

JavaScript break(途中で処理を抜ける)
break(ブレイク)は繰り返し(ループ)を途中で止めたいときに使います。
js
コピー 拡大
for (let i = 1; i < 6; i++) {
  if (i === 3) {
    break; // iが3になったらループを終了
  }
  console.log(i);
}
コンソール(実行結果)
コピー 拡大
1
2
  1. for (let i = 1; i < 6; i++)
    i」という名前の変数をつくり、その中に初期値の1を入れる。「i」が「6」より小さい間だけ繰り返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  2. if (i === 3) {break;}
    「i」が「3」になったときループ処理を終了する。
  3. console.log(i);
    変数「i」の中身をコンソール画面に表示する。
js
コピー 拡大
for (let i = 1; i < 6; i++) {
  if (i === 3) {
    break;
  }
  console.log(i);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
1 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
i < 6 条件式 i6未満の間は処理を繰り返す
i++ インクリメント
演算子
iの値を1ずつ増やす
if 制御構文 「もし〇〇だったらこうする」と判断する命令
=== 厳密等価演算子 中身が等しい(同値、同種類)かチェックする
i === 3 条件式 iが3と等しいかどうかを判定する
break 制御構文 条件が合ったとき、ループを途中で終了して抜け出す
console.log() 出力命令 ()の中身をコンソールに表示

continue(特定の回だけスキップ)

JavaScript continue(特定の回だけスキップ)
continue(コンティニュー)は特定の回だけループ処理をスキップしたいときに使います。
js
コピー 拡大
for (let i = 1; i < 6; i++) {
  if (i === 3) {
    continue; // 3のときはスキップして次のループへ
  }
  console.log(i);
}
コンソール(実行結果)
コピー 拡大
1
2
4
5
  1. for (let i = 1; i < 6; i++)
    i」という名前の変数をつくり、その中に初期値の1を入れる。「i」が「6」より小さい間だけ繰り返しを行う。「i」は繰り返しのたびに1ずつ増えていく。
  2. if (i === 3) {continue;}
    「i」が「3」のときは「continue」によりこの回の処理(console.log(i))をスキップして、次のiのループへ進む。
  3. console.log(i);
    変数「i」の中身をコンソール画面に表示する。
js
コピー 拡大
for (let i = 1; i < 6; i++) {
  if (i === 3) {
    continue;
  }
  console.log(i);
}
コード 種別 意味
for 制御構文 指定した回数だけ処理をくり返す命令
() カッコ for文の制御部分を囲むカッコ
let 変数宣言
キーワード
中身を変えられる変数(箱)を作るという宣言
i カウンタ変数 何回処理をくり返したか数えるための変数
= 代入演算子 右のものを左に入れる
1 初期値 くり返しをスタートする際の最初の値
; 区切り記号 文末につける記号
< 比較演算子 「未満」を表す記号
i < 6 条件式 i6未満の間は処理を繰り返す
i++ インクリメント
演算子
iの値を1ずつ増やす
if 制御構文 「もし〇〇だったらこうする」と判断する命令
=== 厳密等価演算子 中身が等しい(同値、同種類)かチェックする
i === 3 条件式 iが3と等しいかどうかを判定する
continue 制御構文 条件が合う回のループ処理をスキップ
console.log() 出力命令 ()の中身をコンソールに表示

5. for文の注意点

JavaScript for文の注意点

ここではfor文を使う際の注意点を解説しています。

書き方を間違えると無限ループになる

for文を使うときに最も注意すべき点は無限ループの発生です。

無限ループとは、プログラムの繰り返し処理(ループ)が終わらずにずっと続く状態のことを指します。

for文は条件を正しく設定しなかったり、書き方を間違ってしまうだけで、かんたんに無限ループが発生しますので注意が必要です。

たとえば、以下のようなコードを書くと無限ループになります。

js
コピー 拡大
for (let i = 1; i > 0; i++) {
  console.log(i);
}

このコードは「i0より大きい間は、iの値を1ずつ増やしていく」という意味です。

i = 1で始まっているので、ずっと0より大きい状態が続くため、繰り返しが止まらず無限ループになります。

このようにかんたんに無限ループが発生してしまうので、for文を書くときは「このループは本当に止まるのか?」を必ず確認しましょう。

ノーノちゃん

無限ループになってもパソコンを強制終了すればいいだけなんじゃないの?
自分のパソコンだけで実行している場合はそうですが、レンタルサーバーやクラウド上にアップして実行した場合は大変なことになります。

ぶたさん

もし、サーバーダウンなどした場合、アカウント停止や強制退会させられる可能性もあります。最悪の場合は損害賠償を請求されますので注意してください。

ぶたさん

大量にくり返しをさせると重くなる

for文を使うときの注意点は大量に処理をくり返しさせることです。

大量に繰り返し処理をさせると、パソコンやブラウザの動作が遅くなったり、フリーズすることがあります。

無限ループをしていない限り、処理はいつか終わりますが、回数が多すぎるとシステムに負担がかかりますので注意が必要です。

特に、レンタルサーバーにアップしている場合、大量の繰り返し処理を実行すると、サーバーにかなり負担がかかるので気をつけてください。

6. よくある質問

JavaScriptのfor文についてよくある質問

ここではJavaScriptのfor文についてよくある質問をご紹介しています。

オブジェクトとは?

for…in文の書き方

オブジェクトとは、複数の情報をひとつにまとめて入れることができる便利な箱のようなものです。

分かりやすく表すと以下のような感じです。

変数名 フォルダの名前
オブジェクト フォルダの中身
プロパティ 各ファイル(ファイルの名前+ファイルの中身)
キー ファイルの名前
ファイルの中身
変数に入れられるのは「一つの値」だけですが、オブジェクトや配列を使うことでさまざまな情報を入れることが可能になります。

ぶたさん

配列とは?

配列について

配列とは、複数の情報を順番にまとめて入れられる箱のことです。

かんたんに言うと、配列リテラル[]に囲まれているものだと考えていただければOKです。

ノーノちゃん

オブジェクトとなにが違うの?
オブジェクトはフォルダ、配列はリストという感じで役割が異なります。主な違いは下記表をご覧ください。

ぶたさん

オブジェクト 配列
たとえ フォルダ リスト
役割 名前付きの情報をまとめる 順番のある情報をまとめる
管理方法 名前(キー) 順番(インデックス番号)
順番の有無 重要ではない とても重要
書き方 { name: "たろう", age: 20 } [ "りんご", "バナナ", "みかん" ]

カウンタ変数とは?

カウンタ変数とは「ループ処理を何回くり返したか」を数えるために使う変数のことです。

具体的にはループが実行された回数を記録するために使われます。

たとえば、次のようなコードがあります。

js
コピー 拡大
for (let i = 1; i < 5; i++) {
  console.log(i);
}

このときに使われているiがカウンタ変数になります。

iは「index(インデックス)」の頭文字で、カウンタ変数としてよく使われる名前ですので覚えておきましょう。

カウンタ変数は「i」以外だめ?

結論から言うと、i以外の名前を使っても問題ありません

多くの方がカウンタ変数にi,j,k...と順番に使いますが、意味が分かりにくいと感じるなら自分で好きな名前をつけましょう。

たとえば、次のように日付に関する処理をしたい場合…

js
コピー 拡大
for (let day = 1; day < 7; day++) {
  console.log(`今日は${day}日目です`);
}

このようにdayとつけると「これは日付の変数なんだな」と一目で分かるのでいいかもしれません。

ただし、チームで開発している場合はカウンタ変数名をi,j,k...以外にすると、混乱を招いてしまう可能性もあるので注意しましょう。

ぶたさん

while文との違いは?

「for文とwhile文ってどちらもくり返し処理じゃないの?」という方がいると思います。

for文とwhile文の違いは次のようになります。

for文 while文
構文 for (初期値;条件式;増減値) while (条件式)
特徴 指定した回数処理をくり返す 条件を満たしている間くり返し処理を続ける
終了のタイミング 指定した回数に達したら 条件式がfalse(成立していない)になったとき
主な用途 配列の要素を順に処理や一定回数の繰り返しする時 ユーザーの入力待ちや、状態の変化を監視する処理など
このようにfor文とwhile文には違いがありますので、状況によって使い分けましょう。

ぶたさん

配列の合計を出したい

配列の合計を出したい場合は、for文ではなくreduceを使うことをおすすめします。

reduceとは、配列の中にある値(データ)を1つにまとめるための関数です。数値の合計や、文字列を結合して1つにまとめることができます。

たとえば、「1,2,3,4,5」という配列の合計を出したい場合は次のように書きます。

js
コピー 拡大
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(function(a, b) {
  return a + b;
});

console.log(sum);
コンソール(実行結果)
コピー 拡大
15
  1. const numbers = [1, 2, 3, 4, 5];
    「numbers」という名前の変数を作り、1から5までの数字が入った配列を作る。
  2. numbers.reduce(function(a, b) { return a + b; });
    配列の「1」を「a」、「2」を「b」に入れ合計する。その合計を「a」に入れ、次の値「3」を「b」に入れ合計する。これをくり返す。
  3. const sum = ...
    合計の結果を「sum」という変数に入れる。
  4. console.log(sum);
    変数「sum」の中身をコンソール画面に表示する。
js
コピー 拡大
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(function(a, b) {
  return a + b;
});

console.log(sum);
コード 種別 意味
const 変数宣言
キーワード
中身を変更できない変数(箱)を作る宣言
snacks 変数名 変数(箱)の名前
= 代入演算子 右のものを左に入れる
[] 配列リテラル 配列。複数のデータを1つにまとめられる箱
[1, 2, 3, 4, 5] 配列 配列に入っているデータ
; 区切り記号 文末につける記号
sum 変数名 計算された合計を入れるための変数(箱)
reduce 関数 配列の中身のデータを1つにまとめる
function(a, b) 関数 配列の数字をどうやって計算するかを伝える
a 引数 これまでの合計(最初は1番目の値)
b 引数 今から足す値
return a + b return文 足した結果を返して、次のreduceの処理に渡す
console.log() 出力命令 ()の中身をコンソールに表示

7. まとめ

JavaScript:for文の書き方まとめ

for文は同じような処理をくり返したいときに使う構文です。

基本的には「for文」「for..in文」「for..of文」「forEach文」の4つの構文があり、それぞれの特徴に応じて使い分けます。

if文(条件分岐)や関数などと組み合わせて使うこともできるので、いろいろ試してみるといいかもしれません。

まとめ
  • for文は同じような処理をくり返したいときに使う
  • for文は4つの書き方がある
  • ループ処理を抜ける場合はbreak/continueを使う
  • 書き方を間違えると無限ループになるので注意