16

在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
}

这是以下内容的副本:元素顺序 - javascript 中的 for (... in ...) 循环

4

2 回答 2

10

大多数浏览器会按照属性添加到对象的顺序循环遍历属性,但是 Javascript 标准说该顺序是未定义的——所以你不应该依赖这种行为。例如,我不久前阅读了一篇关于 Google Chrome 并非总是表现出这种行为的博客文章。

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

于 2009-03-15T17:12:54.717 回答
0

不,行为取决于实施并且不能保证。当需要保留订单时使用数组。

于 2009-03-15T17:04:32.083 回答