ひらい ぶらり Hi-Library

ぷろぐらみんぐについて。ときどきどうでもいいことについて。

foreach と for + in は違う

これはIEが悪いのかどうかわからないが、とりあえずメモ。
foreachのような挙動をするものとしてfor (var i in data)見たいな文がある。

が、これはforeachではない。らしい。

詳しくはこちら
http://d.hatena.ne.jp/amachang/20070202

for (var i in document.getElementsByTagName("script")) {
    alert(i);
}

ここで期待したいのはforeachのようにiがキーになっていることだが、foreachじゃないので「length」が帰ってくる。
理由は、for in は配列を走査するのではなく、オブジェクトのプロパティを走査するからである。
しかし不思議なことにFireFoxでは期待したとおりに動く。多分プロパティを走査する順番が都合よく動いただけ・・・・・・かな?たぶん。

prototypeクラスとかがよくわからないので要学習。