for 〜 inはRubyとJavaScriptでは違う

array = %w{ inariya kato nakamoto takagi shimura }
for e in array
    puts e
end

と書けるが、

var array = ["inariya","kato","nakamoto","takagi","shimur"];
for(i in array) {
    alert(array[i]);
}

と書かなければならない。
つまり、inの前に来る変数は、
Ruby → arrayの要素
JavaScript → arrayのインデックス
となるので、注意が必要である。
ちなみに何故こうなっているか考えるに、
Rubyの場合は、eachと同じ使い勝手にしたかったからと思われるが、
一方のJavaScriptは、全てのオブジェクトはHashであるということで、
inの右側にHashが来た場合、inの前がキーになり、
Arrayと事実上同じになるためだと思われる。
単なる想像だが、真相はどうなんだろう?