在 JavaScript 中,我可以有一个带有空洞的数组:
a = [];
a[0] = 100;
a[5] = 200;
a[3] = 300;
a.forEach(function(x) {alert(x);});
我找不到有关元素是否按升序处理的信息,或者这不是可靠的事实。
我检查过“for .. in”循环以升序遍历数组索引,而对象的属性名称以它们添加到对象的相同顺序遍历(至少看起来如此)。
(即看起来数组是某种内部树,而对象是哈希表。)
我刚发现 Rhino JavaScript 也会遍历不存在的元素: http://ideone.com/7Z3AFh (与 for..in 不同)。
最佳答案
ECMA-262, 5th edition规范和 MDN's Array.forEach()
page两者都显示了 .forEach()
的算法,并且它肯定会按升序索引顺序遍历数组元素(跳过从未分配过值的索引)。
当然,有些浏览器可能无法正确实现该算法,但我不知道有哪些浏览器不能正确实现。
关于javascript - JavaScript array.forEach 是否按升序遍历元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600922/