for 〜 inはRubyとJavaScriptでは違う
- Rubyの場合
array = %w{ inariya kato nakamoto takagi shimura } for e in array puts e end
と書けるが、
- JavaScriptの場合
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と事実上同じになるためだと思われる。
単なる想像だが、真相はどうなんだろう?