在Firefox中,输出按字母顺序排序(这是它们声明的顺序)。在IE和Chrome中它们是数字的。所有最新版本。
哪个是对的?
<html>
<head></head>
<body>
<script type="text/javascript">
function makeArray()
{
var array = [{5:'Five',4:'Four',1:'One',3:'Three',2:'Two'}];
var msg = '';
for (var val in array[0])
{
msg = msg + val;
}
alert(msg);
}
</script>
<input type="button" onClick="makeArray();" value="Press Me" />
</body>
</html>
回归故事...... 在SpiraTeam(我们当前的错误跟踪系统)中,许多列表(用户,模块等)使用与上述类似的格式进行排序。除非你使用FireFox,否则这会使查找内容变得非常困难和烦人。我的兴趣纯粹是学术性的,我只是问,因为我想知道哪个浏览器是正确的。
答案 0 :(得分:5)
实际上你问: 使用for
循环进行迭代时,对象文字中属性的顺序是什么? 这里的数组无关紧要。
答案是:未指明。大部分时间它与您在代码中看到的相同,但不能保证。
这个问题已被问过数百次:
答案 1 :(得分:1)
你的问题似乎是你没有迭代一个数组,而是一个对象......
ECMA似乎没有在步骤5中定义如何进行此操作...(按字母顺序,数字等)