//如果这样写,会发生栈溢出
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();
         }
     )
}
05-11 15:09