在javascript中,如何从该函数中找出函数的名称?

时间:2010-05-18 23:35:19

标签: javascript function debugging

  

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

标题应该清楚。

是否可以从函数中确定该函数的名称?

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

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

如何获得'function-name'?

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

我希望arguments属性可能会保留这个(例如arguments[0],就像在C中一样),但我无法让它工作。我甚至不确定arguments是否有效。

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

你可以说arguments.callee.toString(),名字可能在那里。如果你匿名声明函数,即var f = function(){}而不是函数f(){}

答案 2 :(得分:0)

function someFunc() {
        var ownName = arguments.callee.toString();
        ownName = ownName.substr('function '.length);
        ownName = ownName.substr(0, ownName.indexOf('('));
        alert(ownName);
}

someFunc();