var a = 0;
function foo(x){
    if(x > 0){foo(x-1);}
    return a += x;
}
console.log(foo(5));
请问这个是如何执行的?

解决方案 »

  1.   

    这个问题,你可以写个页面,然后用调试工具通过监视变量x自己就能试出来,我就这么试出来的,可能不是很准确,说下我理解的流程:
    执行foo(5);进入if(x>0)的判断,为真,则执行foo(4);再进入if(x>0)的判断,为真,进入foo(3);……
    直到执行foo(0);x>0的判断为假,执行【foo(0)内的】return a +=x; a= 0;
    foo(0)函数执行完毕,则foo(1)的if(x>0)判断结束,执行【foo(1)内的】return a +=x; 返回a=1;
    foo(1)函数执行完毕,则foo(2)的if(x>0)判断结束,执行【foo(2)内的】return a +=x; 返回a=3;
    foo(2)函数执行完毕,则foo(3)的if(x>0)判断结束,执行【foo(3)内的】return a +=x; 返回a=6;
    foo(3)函数执行完毕,则foo(4)的if(x>0)判断结束,执行【foo(4)内的】return a +=x; 返回a=10;
    foo(4)函数执行完毕,则foo(5)的if(x>0)判断结束,执行【foo(5)内的】return a +=x; 返回a=15;
    得值:15
    希望对你有帮助
      

  2.   

    我用的火狐浏览器和firebug调试的