変なfor文発見
inでないfor文というのは
var arr = ['a', 'b', 'c', 'd', 'e']; for (var i = 0; i < arr.length; i ++) { alert(arr[i]); }
な感じで
iが0で; lengthを使って配列の数以下まで続けて; iを1づつ足す
というようなもんだと思ってたんだけど
よく見るサイトで
var arr = ['a', 'b', 'c', 'd', 'e']; for (var i = 0, s; s = arr[i]; i ++) { alert(s); }
こんな記述をしていて、これでも問題なく実行できる。
var i , sのような記述ができるのは知っていたけど
lengthを使っていなくて、なんで無限ループにならんのかわからん。
とりあえず憶えておくけど、理屈がわからんのはすぐ忘れるんだよなぁ・・・。
追記
コメントでの有難い助言のおかげで理解できました。
ぶっちゃけ
var num = 3; for (; num ++ < 10;) alert(num);
こんなんでもできましたし
for (var i = 0; i < 10; i ++, alert(i), alert('test' + i));
普段はi++などを書く;で区切られた3番目にも
カンマで区切れば複数のコードが実行できました。
for文一つにしても、これは奥が深いなぁ。
条件に&&などを使うこともできるとは知らんかった。
var s = 3; //sが6まで繰り返された後、続けるかどうか聞いてくる。 for (; s ++ < 6 && confirm('continue?'); alert(s)); //毎回、続けるかどうか聞いてくる。 for (; s ++ < 6 || confirm('continue?'); alert(s));
やば、おもろい。
いつもならこんな感じに書いてたけど
var elm = document.getElementsByTagName('button'); for (var i = 0; i < elm.length; i ++) { alert(elm[i].id); alert(elm[i].innerText); }
↓こう書き換えられる。
for (var i = 0, elm; elm = document.getElementsByTagName('button')[i ++]; alert(elm.id), alert(elm.innerText) );