【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文
を使うようにしましょう。
この記事が気に入ったらサポートをしてみませんか?