javascript - 无论函数名称如何,如何执行递归?

标签 javascript function

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/

相关文章:

java - 一个 Action 的多个 Java 消费者

javascript - 在 Javascript 中创建事件

javascript - 我的日期选择器工作得不太好

javascript - 如何在页面上运行输入js

javascript - Kendo UI Web Scheduler - 动态修改资源数据源

python - 关于 Python 上的函数

excel - 仅当列标题包含特定文本时才使用 COUNTIF

javascript - TCPDF,无法在 cakephp 中包含外部 javascript 文件

C 指向函数的指针

c - 一次声明多个函数如何工作?