2016-05-12 200 views
1

我现在是一个愚蠢的问题,但是,我可以给出当前函数的名称?我对这个很感兴趣,因为我通常使用控制台和我想要得到它jQuery +获取函数的名称

var debug = true; 
var myFunction = $("div").on("click", function(e) { 
    // 
    var error = ""; 
    var something = true; 
    // 
    if(something == true) error = "Something has happened"; 
    if(debug) 
     console.log("Ups!" + myFunction.name + " >> "+ error); 
    // 
}); 

在此先感谢

这并不在我的jQuery例如工作

Can I get the name of the currently running function in JavaScript?

+2

http://stackoverflow.com/questions/1013239/can-i-get-the-name-of-the-currently-running-function-in-javascript –

回答

1

您将需要使用一个命名函数而不是匿名的,即给它一个名字:

$("div").on("click", function myFunction(e) { 
    console.log("Ups!" + myFunction.name); 
}); 

此外,您还需要了解与代码

var something = $("div").on("click", function() {}) 

something会是jQuery的一个实例,当然不是回调函数。所以再一次使用命名函数。

+0

它工作正常!非常感谢 – lmcDevloper

0
arguments.callee.toString(); 

会得到你的整个被调用者的代码行(即函数MyFunction()),那么只是substr从那里出来。

更新 为您的具体情况,请尝试

(function() {console.log("Ups!" + arguments.callee.toString() + " error");})(); 

有时宣称的动作为内联函数使事情蜱好一点。

+0

这在我的jQuery示例中不起作用,但在js函数中是完美的 – lmcDevloper

+0

@lmcDevloper尝试更新答案中的最后一行。 – programndial

0

您可以使用arguments.calleearguments.callee.name获取函数名称。

  • arguments.callee返回带括号的名称(myFunction())。
  • arguments.callee.name返回没有括号的名称(myFunction)。
+0

这在我的jQuery示例中不起作用,但在js函数中是完美的 – lmcDevloper