栈
栈溢出原因
js 每次调用函数就会新建一个上下文环境,推入栈中,如果函数没有执行完,上下文会一直留在栈中直到执行完,所以递归函数会根据递归层数一直往栈中推入新的上下文环境,栈的容量是有限的,最后就会爆栈
写一个不会栈溢出的递归 主要使用蹦床函数
function runStack (n) {
if (n === 0) return 100;
return runStack( n- 2);
}
runStack(50000)
function boom(n){
var m = runStack
while(m instanceof Function){
m = m(n)
}
console.log(m)
}
function runStack (n) {
if (n === 0) return 100;
return runStack.bind(null,n-2);
}
boom(50000)