私はこのようなものを持っています:
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回だけアラートします。そしてそれは終わります。
私はこのようなものを持っています:
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回だけアラートします。そしてそれは終わります。
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もはや満足されていないため)。