【发布时间】:2019-01-06 02:43:51
【问题描述】:
如果我尝试
var count = 0
function recurse() {
count++
recurse()
}
try {
recurse()
} catch(e) {
console.log(e.message, count)
}
结果是Maximum call stack size exceeded 15662,但如果我尝试
var count = 0
function recurse() {
count++
( new Function( recurse.toString().split('\n').splice(1, 2).join('\n') ) )()
}
try {
recurse()
} catch(e) {
console.log(e.message, count)
}
那么结果就是Maximum call stack size exceeded 8862。
为什么数字不同?
【问题讨论】:
-
因为在第一种情况下,每个递归调用的大小更小。商(堆栈大小/堆栈上的函数调用大小)更大。
标签: javascript callstack