ActionScriptのArrayの罠

いや、罠というか仕様を正確に理解していないというか。

var hoge:Array=new Array(4);
hoge[0] += 5;
hoge[1] += 6;
hoge[2] += 7;
hoge[3] += 8;

なにが悪いか判りますか?
私はこれだけで半日悩みました。


new Array()には、中に入っているデータは確定していません。undefinedですね。で、これに対して算術演算を行うとなにをやっても全部NaNになります。つまり、計算自体が成り立たない、と。
元はJava

int[] hoge=new int[4];

をベタで移植していたものだったので、何となく0で初期化されてるような気分になっていたのが敗因です。
しかし、ActionScript3.0は、おおむね強い型付けが行われているのに、所々で弱い型付けが顔を出しますねぇ。
もともと、プロトタイプ型言語だったECMAScriptが母体なので、あちこちに歪みがでてるんだろうなぁ。
JITのおかげでパフォーマンスがいいのはありがたいんですけど。