gpt4 book ai didi

javascript - for ... in - 正在迭代的对象是否在进入循环之前仅评估一次?

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

当我像这样使用 for ... in 循环时:

for(var i in object) {}

我想知道有问题的 object 是只评估一次还是每次循环,好吧,循环

我在我的浏览器中(也在节点中)进行了快速测试,例如:

for(var i in (console.log('INIT'), [1, 2, 3, 4])) { console.log('KEY', i); }

我得到:

INIT
KEY 0
KEY 1
KEY 2
KEY 3

因此,根据这个经验证据,我可以假设确实只评估了一次。

但是,这是行为标准吗?

最佳答案

来自 Mozilla documentation , for...in 循环将遍历对象本身的所有可枚举属性以及对象从其构造函数原型(prototype)继承的属性。在访问之前删除的(可枚举)属性以后将不会被访问。添加到正在发生迭代的对象的属性可以从迭代中访问或省略。

简而言之,无法保证@Amit 发布的示例的结果,尽管 Chrome 和 IE 可能对 for ..in 循环使用不同的规范。然而,至少删除一个元素似乎可以防止它在 Chrome 中被访问:

var obj = { a: 1, b: 2, c: 3 };

for(var k in obj) {
document.write(k);
delete obj['c'];
}

关于javascript - for ... in - 正在迭代的对象是否在进入循环之前仅评估一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35418273/

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