2010-08-11 47 views
1

我有以下代码段:JavaScript的循环通过一个对象,同时将项目添加

var run = 0; 
var obj = {'item1':0,'item2':5,'item3':10}; 
for (var i in obj){ 
    run++ 
    obj['newItem'+run] = 5; 
} 
return run; 

并返回3。但是我希望它无限地继续下去,并最终导致浏览器崩溃。在for循环中有没有更新obj变量的方法?

+4

等等....什么? – 2010-08-11 03:29:56

+0

“但我希望它无限地继续下去,并最终导致浏览器崩溃”。即使得到upvote :) – Anurag 2010-08-11 03:58:23

回答

3

通常,您不应该将属性添加到迭代发生的对象。

引述Mozilla Dev Center

属性添加到在其上迭代发生既可以访问或从迭代省略的对象。一般来说,最好不要在迭代期间添加,修改或删除对象中的属性,而不是当前正在访问的属性;无法保证是否会访问添加的属性,修改的属性是在修改之前还是之后访问,还是在删除之前删除的属性将被访问。

+2

+1好的发现... – xandercoded 2010-08-11 03:37:45

+0

好吧,我想这不会起作用。但是,在循环中添加属性会节省大量编码。 – Azmisov 2010-08-11 15:28:41

相关问题