2013-03-13 56 views
2

我有这样的事情:完成递归函数在JavaScript

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

,我期望输出为0(调用新功能)1,2(结束称为第二功能),然后结束第一次运行1和2的功能。 但是,它只会提醒0,1和2一次,并完成。

回答

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, 2从递归的更深层次之中。

按照最初写的,你会得到0从顶层,1,2从更深的层次,然后就没有在顶级别的(因为i < 3不再满足)。