こんにちは。櫻井です。
最近for文について色々記事を書いてますが、wordpress使ってるとfor文よりwhile文をよく見かける気がします。JSだとfor文を多く見かける気がしますがこの違いはなんなのでしょうか?
なのでまずはwhile文について調べていきたいと思います。
while文
while文は
while(条件式) {
// 処理する内容
}
基本的にこのような感じで書きます。()の中がtrueの間はずっと{}の中の処理をし続けます。
なので処理する内容のところに条件式の値が変わるようなものが必ず必要になります。
ないと永遠にループし続けて大変なことになります。なので例えばこんな感じになります。
var target = document.querySelector('#js-txt');
var i = 0;
var dataItem = [{
"id": 1,
"name": "りんご"
}, {
"id": 2,
"name": "みかん"
}, {
"id": 3,
"name": "イチゴ"
}
];
var i = 0;
while(i < dataItem.length) {
// 処理する内容
target.innerText += `${dataItem[i].id}:${dataItem[i].name}\n `;
i++;
}
この例だとiがdataItemの中の{}の数より小さかったらtargetにテキストを入れ込んでiに1を足してというのを繰り返してます。
なので結果は
1:りんご
2:みかん
3:イチゴ
こうなります。for文と一緒ですね。
まとめ
正直for文との違いを調べてもあまりほとんど無そうな感じがしています。
色々読んで見ると
何回処理するか決まっているものはfor文、決まっていないものはwhile文っていう感じで書かれているものをいくつか読みましたが何回処理するかなんて変数で決めればfor文でもwhile文でも一緒では?って思ってしまいます。
あえて違いをあげるとしたら条件式のiの値を好きなタイミングで変えられることでしょうか?使い所を聞かれると困ってしまいますが。あとはfor文よりwhile文の方がif文に似ていてとっつきやすそうな感じがします。
ちなみに処理速度だとほとんど変わらないそうですが若干whileの方が早いみたいです。たくさん処理するものはwhileの方がいいのかも知れませんね。