递归堆栈 - Javascript

Zac*_*ith 1 javascript recursion

我在Javascript中尝试这个递归的事情,并发现数字以错误的顺序打印出来(Desc,而我期待着Asc).为什么会这样,我如何可视化过程?

(function hi(x) {
    if (x > 1000) {
        return;
    } else {
        x+=1;
        setTimeout(hi(x), 100000);
        console.log(x);
    }
})(4)
Run Code Online (Sandbox Code Playgroud)

Roy*_*mir 5

将您的代码更改为:

(function hi(x) {
    if (x > 1000) {
        return;
    } else {
        x+=1;
        setTimeout(function (){hi(x);}, 100);
        console.log(x);
    }
})(4)
Run Code Online (Sandbox Code Playgroud)

变化就在这里:

function (){hi(x);}
Run Code Online (Sandbox Code Playgroud)

这个 :

 setTimeout(hi(x),
Run Code Online (Sandbox Code Playgroud)

立即调用该函数.你不想那样.

您想要一个在100000毫秒后运行的功能hi(x).