2

私はこのようなものを持っています:

function recurse(a){
  for(i = a; i < 3; i++){
    alert(i);
    if(i == 0){
      recurse(++a);
    }
  }
} 
recurse(0);

私が期待する出力は0(新しい関数を呼び出す)1、2(呼び出された2番目の関数を終了する)であり、関数の最初の実行を1と2で終了します。ただし、代わりに0、1、2を1回だけアラートします。そしてそれは終わります。

4

1 に答える 1

2

iグローバルです

試してみてくださいvar i。期待どおりの動作が得られる場合があります。

function recurse(a){
  for(var i = a; i < 3; i++){
    alert(i);
    if(i == 0){
      recurse(++a);
    }
  }
} 
recurse(0);

出力:0, 1, 2, 1, 2

1つ目1, 2は、より深いレベルの再帰からのものです。

最初に書かれたように、あなた0はトップレベル1,2から、より深いレベルから、そしてトップレベルの他の何も得ないでしょう(i < 3もはや満足されていないため)。

于 2013-03-13T02:25:28.453 に答える