作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 for .. in
循环遍历对象的成员时,枚举顺序 is implementation defined .但是,假设对象没有被修改,在同一个页面访问期间在同一个浏览器中迭代它两次是否保证给出相同的顺序?
这是测试我正在谈论的属性的示例代码。问题归结为浏览器是否会抛出“不一样”:
a = []
b = []
for (var e in obj)
a.push(e);
for (var e in obj)
b.push(e);
// Are a and b's contents now the same?
// Or is the same-ness implementation defined?
for (var i = 0; i < a.length; i++)
if (a[i] !== b[i])
throw "not the same";
我对现有浏览器的规范和实践的答案很感兴趣。
明确地说,我不是在问 whether the order is consistent across browsers 。我想问的是,在单次访问网页的上下文中以及对象未被修改时,同一对象的多个枚举的顺序是否一致。
最佳答案
没有。正如文档所说,它取决于实现。如果未修改,不太可能实现会以不同的顺序返回相同的对象,但不能保证。
A Set object ,另一方面,将“按插入顺序迭代其元素”。
关于javascript - javascript 是否保证两次枚举同一个对象将以相同的顺序遍历字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878015/
我是一名优秀的程序员,十分优秀!