Obtenir un nom de fonction anonyme

Comment obtenir le nom de la variable dans une fonction dans cet exemple:

// it should return A var A = function(){ console.log(this.name); } 

Y a-t-il quelque chose comme ça?

Cette fonction est anonyme; Il n'a pas de nom. Vous pourriez, cependant, lui donner un nom:

var A = function a() {};

Ensuite, son nom est accessible via Function.name :

 var A = function a() {}; A.name > 'a' 

Je sais que c'est un vieux fil, mais toujours dans les résultats de recherche. Donc juste pour référence:

Une solution pourrait simplement utiliser la piletrace.

 var stack = new Error().stack; 

Utilisez la garniture et la fente pour accéder aux valeurs souhaitées.

Non, il n'y a rien de tel en Javascript. Cette fonction est anonyme, donc elle n'a pas de nom, et ce que vous voulez est ambigu, car la fonction pourrait aussi facilement avoir n'importe quel nombre de variables qui le font référence comme suit:

 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 

Qu'est-ce que vous essayez vraiment d'accomplir? Je suis sûr qu'il existe une autre façon de l'atteindre.

Il est possible dans les dernières versions de Chrome et Firefox comme suit. Je ne le recommande que pour des raisons de débogage (p. Ex. Traçage javascript en non-production)

 var myNameInChrome = /.*Object\.(.*)\s\(/.exec(new Error().stack)[0]; var myNameInFF = new Error().stack.split("@")[0];