代码之家  ›  专栏  ›  技术社区  ›  roryhewitt

在javascript中,如何从函数内部找出函数的名称?[复制品]

  •  4
  • roryhewitt  · 技术社区  · 15 年前

    可能重复:
    How can I get the name of function inside a JavaScript function?

    标题应该清楚。

    有可能吗? 从函数内部 确定函数的名称?

    基本上,我在一些函数中添加了一些调试代码,我希望能够简单地在每个函数中添加以下行:

    if (global_debugOn) alert("Processing function " + function-name);
    

    如何获取“函数名”?

    是的,显然我可以简单地输入函数名(毕竟,我输入的是 alert 但这很麻烦,特别是如果有一种简单的动态检索方法的话。另外,随着函数名在开发过程中的变化,我想让它保持最新…

    我希望 arguments 属性可能包含此(例如 arguments[0] 就像C),但我不能让它工作。我甚至不确定 争论 不管怎样。

    谢谢!

    罗里

    3 回复  |  直到 15 年前
        1
  •  2
  •   Matt    15 年前

    最接近的是 arguments.callee ,它实际上返回函数本身,而不是名称。

    唯一的另一件事是 arguments.caller ,返回一个字符串,但它只在Mozilla中存在,在那里甚至不再受支持。

    最后一个选择是 arguments.callee.toString() …但这将返回函数声明,而不仅仅是名称。

        2
  •  0
  •   rob    15 年前

    您可以说arguments.callee.toString(),名称可能在其中。如果您匿名声明函数,即var f=函数()而不是函数f()则不会这样做。

        3
  •  0
  •   Strelok    15 年前
    function someFunc() {
            var ownName = arguments.callee.toString();
            ownName = ownName.substr('function '.length);
            ownName = ownName.substr(0, ownName.indexOf('('));
            alert(ownName);
    }
    
    someFunc();
    
    推荐文章