开发者

In javascript, how do I find out the name of a function from within that function? [duplicate]

开发者 https://www.devze.com 2022-12-30 14:21 出处:网络
This question already has answers here: Closed 12 years ago. Possible Duplicate: How can I get the name of function inside a J开发者_如何学CavaScript function?
This question already has answers here: Closed 12 years ago.

Possible Duplicate:

How can I get the name of function inside a J开发者_如何学CavaScript function?

The title should make it clear.

Is it possible from within a function to determine the name of that function?

Basically, I'm adding some debugging code to a number of functions, and I'd like to be able to simply add the following line inside every function:

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

How can I get 'function-name'?

Yes, obviously I could simply type in the function name (after all I'm typing in the whole alert bit), but that's a hassle to do, especially if there is a nice simple way of retrieving it dynamically. Plus, as function names change during development, I'd like to keep it up-to-date...

I hoped that maybe the arguments attribute might hold this (e.g. arguments[0], like in C), but I couldn't get it to work. I'm not even sure if arguments works anyway.

Thanks!

Rory


The closest thing is arguments.callee, which actually returns the function itself, not the name.

The only other thing is arguments.caller, which returns a string, but that is only in Mozilla and is not even supported there anymore.

One last option is to call arguments.callee.toString() .. but that will return the function declaration, not just the name.


you can say arguments.callee.toString() and the name may be in there. it won't if you declare the function anonymously, i.e. var f = function () {} as opposed to function f(){}


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

someFunc();
0

精彩评论

暂无评论...
验证码 换一张
取 消