自调用JavaScript函数是否会导致堆栈溢出异常

自调用JavaScript函数是否会导致堆栈溢出异常,javascript,function,settimeout,stack-overflow,Javascript,Function,Settimeout,Stack Overflow,这里我有一个在setTimeout回调函数中调用自身的函数: function myFunc(){ // ... I'm doing my jobs here... setTimeout(function(){ myFunc() //self invoke },1) } myFunc(); // start point 此代码是否最终会发生堆栈溢出异常? 提前感谢。否。通过setTimeout排队的函数只有在主线程(或当前正在进行的任何线程)完成后

这里我有一个在
setTimeout
回调函数中调用自身的函数:

function myFunc(){

    // ... I'm doing my jobs here...

    setTimeout(function(){
        myFunc() //self invoke
    },1)
}

myFunc(); // start point
此代码是否最终会发生堆栈溢出异常?

提前感谢。

否。通过
setTimeout
排队的函数只有在主线程(或当前正在进行的任何线程)完成后才会运行-没有可能导致您担心的溢出的嵌套调用/嵌套环境。如果运行此代码段,您将永远不会遇到错误,例如:

函数myFunc(i){
if(i%1000==0)console.log(i);
setTimeout(函数(){
myFunc(++i)
})
}

myFunc(0)否。通过
setTimeout
排队的函数仅在主线程(或当前正在进行的任何线程)完成后运行-没有可能导致您担心的溢出的嵌套调用/嵌套环境。如果运行此代码段,您将永远不会遇到错误,例如:

函数myFunc(i){
if(i%1000==0)console.log(i);
setTimeout(函数(){
myFunc(++i)
})
}
myFunc(0)