Possible Duplicate:
Can I get the name of the currently running function in javascript?
我需要这个来进行递归。我希望能够更改函数名称,而无需检查和更改函数调用自身的每个实例。
(例如 php 有“魔法常量”,如 __FUNCTION__
等 - JavaScript 中有类似的东西吗?)
最佳答案
如果您的目标是递归,并且可以获得对函数本身的引用,则不需要将函数名称作为字符串>。请注意,您仍然需要检查和更改其他人调用该函数的每个实例,这可能是比更新递归调用更大的任务(如果没有其他原因,而不是本地化到函数体)。
将函数作为参数传递
function foo(self, i)
{
if (i === 0 )
return;
console.log(i--);
self(self, i);
}
foo(foo, 3);
使用arguments.callee(正如 Raynos 指出的,这在严格模式下很脆弱)
function foo(i)
{
if (i === 0 )
return;
console.log(i--);
arguments.callee(i);
}
foo(3);
任一选项的输出
3
2
1
关于javascript - 无论函数名称如何,如何执行递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548715/