0

これが私のコードの jsfiddleです。t

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 に答える