gpt4 book ai didi

javascript - javascript 是否保证两次枚举同一个对象将以相同的顺序遍历字段?

转载 作者:行者123 更新时间:2023-11-29 14:43:14 25 4
gpt4 key购买 nike

当使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com