循环遍历javascript对象中的字段顺序是否可预测?

时间:2009-03-15 17:01:29

标签: javascript language-features

在php中,如果您有以下代码:

$map = array(
  "first" => 1,
  "second" => 2
);

$map["third"] = 3;

foreach($map as $key => $value) {
  // code
}

您知道这些条目将按照它们添加到阵列的顺序列出。

现在,我可以假设同样的规则适用于下面的Javascript等价物吗?

map = {
  "first": 1,
  "second": 2
};

map["third"] = 3;

for (key in map) {
  // code
}

这是:Elements order - for (… in …) loop in javascript

的副本

2 个答案:

答案 0 :(得分:10)

大多数浏览器会按照添加到对象的顺序遍历属性,但Javascript标准说订单是未定义的 - 因此您不应该依赖此行为。例如,我在前一段时间阅读了blog post有关Google Chrome并不总是表现出这种行为的信息。

如果您需要订购的功能,您应该为自己创建一个可以同时使用对象或数字键的新类。

答案 1 :(得分:0)

不,行为取决于实施,但无法保证。在需要保留订单时使用数组。