有可能这样做吗:
myfile.js:
function foo() {
alert(<my-function-name>);
// pops-up "foo"
// or even better: "myfile.js : foo"
}
我的堆栈中有Dojo和jQuery框架,所以如果它们中的任何一个使工作更容易,都可以使用它们。
有可能这样做吗:
myfile.js:
function foo() {
alert(<my-function-name>);
// pops-up "foo"
// or even better: "myfile.js : foo"
}
我的堆栈中有Dojo和jQuery框架,所以如果它们中的任何一个使工作更容易,都可以使用它们。
当前回答
对于非匿名函数
function foo()
{
alert(arguments.callee.name)
}
但在错误处理程序的情况下结果应该是错误处理程序函数的名称,不是吗?
其他回答
这个问题的最新答案可以在这个答案中找到: https://stackoverflow.com/a/2161470/632495
如果你不想点击:
function test() {
var z = arguments.callee.name;
console.log(z);
}
(function f() {
console.log(f.name); //logs f
})();
打印稿变化:
function f1() {}
function f2(f:Function) {
console.log(f.name);
}
f2(f1); //Logs f1
注意仅适用于ES6/ES2015兼容引擎。更多信息请参见
既然你写了一个名为foo的函数,你知道它在myfile.js中,为什么你需要动态地获取这个信息?
也就是说,你可以在函数内部使用arguments.callee.toString()(这是整个函数的字符串表示),并regex出函数名的值。
下面是一个会吐出自己名字的函数:
function foo() {
re = /^function\s+([^(]+)/
alert(re.exec(arguments.callee.toString())[1]);
}
对于非匿名函数
function foo()
{
alert(arguments.callee.name)
}
但在错误处理程序的情况下结果应该是错误处理程序函数的名称,不是吗?
答案很简单:alert(arguments.callee.name);