Adding to https://stackoverflow.com/a/54443904/11022136.
Wanted to give some evidence.
Ran the following on node 14.
test.js:
let i = 10;
const canThisOverflow = () => {
i--;
console.trace();
if (i > 0) setTimeout(canThisOverflow, 1);
}
canThisOverflow();
Output: Stack size does not increase
Trace
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test.js:4:10)
at Object.<anonymous> (/Users/arjunmalik/Shipsy/query-builder/test.js:7:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Trace
at Timeout.canThisOverflow [as _onTimeout] (/Users/arjunmalik/Shipsy/query-builder/test.js:4:10)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)
Trace
at Timeout.canThisOverflow [as _onTimeout] (/Users/arjunmalik/Shipsy/query-builder/test.js:4:10)
at listOnTimeout (internal/timers.js:554:17)
at processTimers (internal/timers.js:497:7)
test2.js:
let i = 10;
const canThisOverflow = () => {
i--;
console.trace();
if (i > 0) canThisOverflow();
}
canThisOverflow();
Output: Stack size increases
Trace
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:4:10)
at Object.<anonymous> (/Users/arjunmalik/Shipsy/query-builder/test2.js:7:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Trace
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:4:10)
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:5:13)
at Object.<anonymous> (/Users/arjunmalik/Shipsy/query-builder/test2.js:7:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
Trace
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:4:10)
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:5:13)
at canThisOverflow (/Users/arjunmalik/Shipsy/query-builder/test2.js:5:13)
at Object.<anonymous> (/Users/arjunmalik/Shipsy/query-builder/test2.js:7:1)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47