【发布时间】:2011-11-12 02:13:39
【问题描述】:
我想知道,如果函数被调用为递归函数,如何获取函数堆栈调用参数? 如果我有一个正常的函数,每个函数都调用另一个函数,它就可以工作。但如果我想得到 递归堆栈,我总是得到最后传递的参数。
function a(p1, p2) {
b(p1, p2, 3)
}
function b(p1, p2, p3) {
c(p1, p2, p3, 4)
}
function c(p1, p2, p3, p4) {
console.log(arguments.callee.caller.caller);
}
a(1, 2)
在这种情况下,我总是会得到相同的结果:
var i = 3;
function a(p1, p2) {
var args = Array.prototype.slice.apply(arguments);
args.push(i);
while (--i > 0) {
arguments.callee.apply(arguments.callee, args);
}
if (i === 0) {
console.log(arguments.callee.caller.caller.caller.caller);
}
}
a(1, 2);
【问题讨论】:
标签: javascript recursion stack