2010-08-25 17 views
9

Possible en double:
Determine original name of variable after its passed to a function.Obtenez le 'nom' d'une variable Javascript

Je voudrais savoir s'il est possible d'obtenir le nom réel d'une variable.

Par exemple:

var foo = 'bar'; 
function getName(myvar) { 
    //some code 
    return "foo" 
}; 

Donc, pour getName (foo) retournera "foo"

Est-ce possible?

Merci.

+2

pourquoi seriez-vous intéressé par nom de variable? Plutôt votre logique dans les fonctions devrait dépendre des valeurs variables non? –

+0

Je trouve ce code extrêmement bizarre. Je me demande ce que vous essayez d'accomplir? –

+0

Heureusement, ce n'est pas possible en JavaScript, sinon vous finiriez avec quelque chose d'horrible³ comme ça ... http://stackoverflow.com/questions/2749796/how-to-get-the-original-variable-name- of-variable-passed-to-a-function/2749857 # 2749857 –

Répondre

4

Je ne pense pas que ce soit possible. Lorsque vous appelez une fonction, vous passez un objet, pas une variable. La fonction ne se soucie pas d'où vient l'objet.

Vous pouvez aller dans l'autre que si vous appelez votre fonction comme suit:

getName('foo') 

Ou passer à la fois la valeur et le nom:

getName(foo, 'foo') 
+0

Juste un commentaire, pourquoi devrais-je passer une valeur de chaîne codée 'foo' quand je sais que je vais l'obtenir comme valeur de retour? –

+0

@Sachin Shanbhag: Comment allez-vous l'obtenir comme valeur de retour si vous ne le transmettez pas en paramètre? Vous supposez que ce que le PO demande est possible. Peut-être que c'est ... mais j'aimerais vraiment voir des preuves de cela s'il vous plaît. –

+0

Je suis totalement d'accord avec vous. C'est l'un des moyens possibles d'obtenir ce qui est requis, mais du point de vue de la programmation, si j'utilise cette valeur de retour pour d'autres opérations, je connais déjà cette valeur avant de la transmettre à la fonction et n'ai pas besoin d'attendre la valeur retournée. Sans vouloir offenser, mais je suppose en fait que l'obtention du nom de la variable n'est pas posible car cela n'aide pas à la programmation. –

Questions connexes