【Javascript】いつまで経っても終わらない!?無限ループを防ごう

「無限ループ」

ネットでよく使われることが多い言葉ですが

そもそも無限ループとは、プログラミング用語で、

・while文
・for文

において

「永久に繰り返されるループ」

のことです。
なので無限ループを避けるには、

「きちんと終わる条件式」

を書く必要があります。

条件式というのは

<、>、>=、<=、===、...という条件演算子

を使って

比較した結果をtrue,falseで示す

というものです。

演算子について詳しく知りたい場合は、以下の記事をご覧ください。

↓   ↓   ↓


while文やfor文は条件式の値が

「true」

であるかぎり、回りつづけます。

つまり

条件式がfalse(条件が合わない)

で終わる必要があるのです。

いいかえれば、

「きちんとした終わる条件式」になる

ように、ループ内の処理を書く必要があります。

ですが、なるべく条件式を書かずに、

できることならなるべく短く済ませたいですよね…?

結論、配列のループを回すだけなら、

「for in文が鉄則」

なのではないかと考えています。

それでは、見ていきましょう。

なるべく、for in文で書く

配列のループの場合、

for(let num=0;num<plans.length;num++){}
for([ループ内の変数];条件式;[ループ後にどうするか]){}

もできないことはないですが、

いざ、うっかりと

「条件式」を間違える

とループが止まらない

「無限ループ」

になってしまいます。結果

「コンピュータの処理負荷」

が高まってしまい、

最悪「プログラム」を強制終了

せざるをえなくなってしまいます。

なので、配列のループのときは、できるだけこのように

 for (let i in cells){
    console.log(cells[i]);
 }

for in文をなるべく使いましょう。

こうすることによって、

「安全に配列のループを回す」

ことができます。

while文はなるべく避ける

そもそもwhile文は

while(条件式){}

なので、

「条件式」

しか記述できません。

なので、ループ内で

条件式が必ずfalse

になるようにループを回さなければいけないので、

「無限ループ」のリスク

は高くなります。

配列のループ以外の条件で終わりたいときに

「while・forループ」

を使いましょう。

しかしながら、JavascriptベースのGAS(Google Apps Script)でちょこちょこツールを作っていますが、

今までに

「while文を使ったこと」

はないです。※また、whileループを使う機会が出てくるかもしれません。

まとめ

いかがでしたでしょうか。

配列のループだけなら、

「for in文を使う」

のがベストです。

それ以外の条件でループを回したいときだけ、

・for文
・while文

を使うようにしましょう。

この記事が気に入ったらサポートをしてみませんか?