//如果这样写,会发生栈溢出
var i = 1;
function isEven() {
console.log(i++);
// return isEven();
return process.nextTick(
function () {
return isEven();
}
)
}
//不同的javascript引擎报错可能不同
//Outputs: Uncaught RangeError: Maximum call stack size exceeded
//报错时,i每次都是固定的(我的是20900),
console.log(isEven());
//这样写就不会,因为 process.nextTick()定义的调用会创建一个新的子堆栈,所以不会发生栈溢出
var i = 1;
function isEven() {
console.log(i++);
return process.nextTick(
function () {
return isEven();
}
)
}