自调用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)代码>