【发布时间】:2015-03-08 23:31:41
【问题描述】:
我有一个对象,我试图递归迭代,但陷入了无限循环。我怀疑问题是我的for循环中的变量i没有增加,但是为什么呢?
我的代码:
var failsafe = 0;
function iter(obj) {
for (i = 0; i < obj.length; i++) {
console.log("Now #"+i);
if (typeof obj[i].contains == "object") {
console.log(obj[i].command);
iter(obj[i].contains);
} else {
console.log(obj[i].command);
}
if (failsafe==20) return false;
failsafe++;
}
}
iter(parsed);
控制台输入:
Now #0
do (5)
Now #0
move.up()
Now #1
move.left()
Now #2
if (check.up() == "item")
Now #0
move.down()
Now #2
if (check.up() == "item")
Now #0
move.down()
Now #2
if (check.up() == "item")
Now #0
move.down()
... and so on
对象:
[
{
"command":"do (5)",
"contains":[
{
"command":"move.up()",
"contains":false
},
{
"command":"move.left()",
"contains":false
},
{
"command":"if (kind == \"item\")",
"contains":[
{
"command":"move.down()",
"contains":false
}
]
},
{
"command":"move.right()",
"contains":false
}
]
}
]
【问题讨论】:
标签: javascript object recursion iterator infinite-loop