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

Jul*_*urg 16 javascript language-features

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

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

$map["third"] = 3;

foreach($map as $key => $value) {
  // code
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

map["third"] = 3;

for (key in map) {
  // code
}
Run Code Online (Sandbox Code Playgroud)

这是一个副本:元素顺序 - 在javascript中的(... in ...)循环

chr*_*der 10

大多数浏览器将按照添加到对象的顺序循环遍历属性,但Javascript标准表示订单未定义 - 因此您不应该依赖此行为.例如,我稍后阅读了一篇关于Google Chrome并不总是表现出这种行为的博客文章.

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