2010-12-01 7 views
0
function giveValue(n){ 
    ["r"+n]=5; 
} 
giveValue(10); 

Vous avez l'idée. Le point est que j'ai une poignée de variables avec un nom similaire, variant seulement dans un nombre à la fin. L'utilisation d'une instruction switch est très bien avec quelques variables à quelques reprises, mais pour ce projet particulier, cela me rend fou. Je sais que je peux faire:["var" +1] = someValue - Peut-on faire quelque chose comme ça?

var r2="lol"; 
var someVar=eval("r"+2); 
//someVar=="lol" 

Et je me demandais si je peux faire quelque chose comme ça, mais avec la référence dynamique à la gauche d'une affectation.

Est-ce possible?

+0

Quel est le problème avec un tableau? Est-ce vraiment plus difficile de taper 'r [2]' au lieu de 'r2'? –

+0

Disons que c'est trop tard pour ça. – navand

+0

Ce n'est pas ce à quoi eval() était destiné. – Babiker

Répondre

3

Si vous voulez vraiment faire cela, cela devrait fonctionner:

function giveValue(n){ 
    window['r'+n] = 5; 
} 
giveValue(10); 

console.log(r10) 

Mais s'il vous plaît, NE PAS FAIS LE!

Vous devriez vraiment use arrays!

+0

Je pensais que quelque chose comme ça pourrait être fait. Je vous remercie. Après avoir vu toutes les réponses d'alarme, je vais juste changer le code et utiliser les tableaux, mais il est bon de savoir que cela peut arriver. – navand

+0

@Eric: Trop tard, vous avez déclenché le monstre! Encore un script affreux dans la nature! – Gareth

+0

@navand: pouvez-vous accepter l'une des deux réponses? – Eric

2

La meilleure façon est de créer un tableau appelé r:

var r = []; 
r[2] = 5; 
+0

Ma question concerne plus la curiosité que l'aspect pratique maintenant. Peut-il être fait sans tableaux? – navand

+0

Bien sûr, si vous êtes fou! – Gareth

+0

@navad: Les tableaux ne sont pas seulement pratiques, ils sont aussi ** sains **;) – delnan

Questions connexes