JavaScriptの連想配列に格納した順序

var hash = {zzz:1, aaa:2, nnn:3};
for (var key in hash) {
    alert(key + ' = ' + hash[key]);
}

// Bookmarklet
javascript:(function(){var hash = {zzz:1, aaa:2, nnn:3}; for (var key in hash) { alert(key + ' = ' + hash[key]); } })();

こんな感じで実験してみたら、IEFirefox

zzz = 1
aaa = 2
nnn = 3

となり、順序は変わりませんでした。

var hash = {};
hash.zzz=3;
hash.aaa=1;
hash.nnn=2;
delete hash.aaa;
for (var key in hash) {
    alert(key + ' = ' + hash[key]);
}

としても、期待通り

zzz = 3
nnn = 2

という順番に出てきました。

  • 要素をdeleteしても順序は変わらないみたい
  • 要素を追加しても最後尾に追加されるみたい

です。

まあ仕様書によると追加した順序が保証されないようですので、この挙動を当てにするのは間違ってると思います。

だから何なんだと言われても困ります。

このエントリ意味がワカランのですけど?連想配列のキーが配列として実装されているんじゃないかとか言いたかったのかな?わからん・・・