Get anonymous function name

前端 未结 4 1028
深忆病人
深忆病人 2020-12-06 21:00

How to get the the variable name from within a function in this example:

// it should return A
var A = function(){ console.log(this.name); } 
相关标签:
4条回答
  • 2020-12-06 21:22

    That function is anonymous; it has no name. You could, however, give it a name:

    var A = function a() {};

    Then its name is accessible via Function.name:

    var A = function a() {};
    A.name
    > 'a'
    
    0 讨论(0)
  • 2020-12-06 21:32

    I know this is an old thread, but still in search results. so just for reference:

    a solution could simply be using the stacktrace.

    var stack = new Error().stack;
    

    use trim and split to get to the desired values.

    0 讨论(0)
  • 2020-12-06 21:44

    It is possible in recent versions of Chrome and Firefox as follows. I only recommend this for debugging purposes (e.g. javascript tracing in non-production)

    var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0];
    var myNameInFF = new Error().stack.split("@")[0];
    
    0 讨论(0)
  • 2020-12-06 21:46

    No, there is nothing like that in Javascript. That function is anonymous, so it has no name, and what you want is ambiguous because the function could just as easily have any number of variables referencing it like:

    var a, b, c, d;
    a = b = function(){ console.log(this.name); };
    c = b;
    d = c;
    a = b = 5;
    // a and b no longer refer to the function, but c and d both do
    

    What is it you are actually trying to accomplish? I'm sure there is another way to achieve it.

    0 讨论(0)
提交回复
热议问题