連想配列の罠

var a = new Array();
a["hogehoge"] = true;

Arrayオブジェクトはこんな風に「連想配列」として使える、とよく紹介されていますが、

for (var i = 0; i < a.length; i++)

ループを回して要素にアクセスしようとすると、a.lengthがゼロを返すのでループが実行されません。
つまり、連想配列のキーとして渡した文字列は、Arrayオブジェクトのプロパティとして扱われるだけなのです。
正しくは、

for (var i in a)

となります。すっかり「連想配列」という名前に騙されてしまったのでした。orz