0

这是我的代码的 jsfiddle。吨

function test(i)
{
  if(i==2)
      return {title:"finished at 2", data:"empty"}
  else
  {
          a=[]
          a.push(test(i+1))
          a.push(test(i+1))
          return {title:"number "+i, data:a}
    }
}

alert(JSON.stringify(test(0)))

这里,test(0)应该

{
    title: "number 0",
    data: [{
        title: "number 1",
        data: [{
            title: "finished at 2",
            data: "Empty"
        }, {
            title: "finished at 2",
            data: "Empty"
        }]
    }, {
        title: "number 1",
        data: [{
            title: "finished at 2",
            data: "Empty"
        }, {
            title: "finished at 2",
            data: "Empty"
        }]
    }]

虽然您可以看到它在代码结果中有所不同。如何和为什么?我该怎么做才能使它正确?

4

1 回答 1

4

您在递归函数中使用了一个全局变量,因此在您使用它时它会被更改。

改变这个:

a = []

到:

var a = []
于 2012-06-25T11:33:25.233 回答