今天写递归的时候出现了这个错误,错误的意思就是‘超出最大调用堆栈的大小’;
为什么会出现这种错误呢,通俗来将就是 在使用递归的时候除了调用自身以外,没有任何停止调用自身的条件,也就是函数一直在执行,没有停止。
function start() {
console.log("start");
}
function end() {
console.log("end");
start();
}
end();
因为js是单线程,执行完成一个函数下一个函数才会执行,上述代码中start()在end()中被调动,此时执行start(),而end()会被存放到线程池等待,等待start()执行完成后,才会再次执行end()。
但是如果在start()中再次调用end()就会报错;应为end()还未完全执行,此时调用end()相当于这个栈只进不出,最后的结果只能是报错。
function start() {
console.log("start");
end()
}
function end() {
console.log("end");
start();
}
end();
如果小伙伴们在编写代码的过程中遇到了上述错误,那就要好好检查一下是不是哪个函数被不断的调用没有停止;