2010-08-11 51 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