Firefox13にアップデートして、ECMAScript6の仕様である"for-of"ループというのが使えるようになったらしい。早速試す。
var arr = [ 3,5,7 ]; arr.foo = "hello"; for(var i in arr){ console.log(i); // 0 , 1 , 2 , foo } for(var i of arr){ console.log(i) // 3 , 5 , 7 }
となる。
for-inループの方はkeyを取り出すのに対し、for-ofループはvalueを取り出せる。key指定せずに値取り出せるのは便利かなと思います。
var arr = {1:"a",2:"b"}; for(var i of arr){ console.log(i) } // TypeError: arr is not iterable
ただし、これはエラーとなってしまいます。うーん。なんだかなー。