Duplication possible:
Javascript – variables dynamiques
Puis-je avoir quelque chose comme ça, c'est Jquery
for(var i=0;i<10;i++) { var (eval(i+17)) = y; y++; }
J'ai besoin de cela parce que je veux avoir une variable dynamique créée en vol, tout devrait pouvoir lui attribuer des valeurs.
La bonne réponse ici est d'utiliser des tableaux:
var arr = []; for (var i = 0; i < 10; i++) { arr[i + 17] = y; y++; }
Si vous connaissez votre contexte actuel, vous pouvez créer des variables de la même manière. Disons, pour la portée globale ( window
):
for (var i = 0; i < 10; i++) { window[i + 17] = y; y++; }
Mais cela signifie que vous piquez sur votre portée avec des noms de variables aléatoires. Gardez-les dans un tableau à la place.
En fait, vous ne devez pas utiliser de tableaux. Vous pouvez également utiliser des objets.
var y = 0; var obj = {}; var arr = []; for (var i = 0; i < 10; i++) { obj[i + 17] = y arr[i + 17] = y; y++; } console.log(obj); console.log(arr);
La sortie de la console semblerait (étendue) comme ça:
Object 17: 0 18: 1 19: 2 20: 3 21: 4 22: 5 23: 6 24: 7 25: 8 26: 9 __proto__: Object [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
JSFiddle à jouer est ici .
Les avantages supplémentaires de l'utilisation de l'objet sont les suivants:
obj
var devrait être de taille inférieure à votre variable arr
, car elle n'aura pas d'indices inutilisés Ce qui suit fonctionnerait pour l'objet et n'ajoute aucune variable au tableau:
var y = 0; var obj = {}; var arr = []; for (var i = 0; i < 10; i++) { obj['my variable' + (i + 17)] = y arr['my variable' + (i + 17)] = y; y++; }
L' arr
ressemblerait à ceci:
Object my variable17: 0 my variable18: 1 my variable19: 2 my variable20: 3 my variable21: 4 my variable22: 5 my variable23: 6 my variable24: 7 my variable25: 8 my variable26: 9 __proto__: Object
Et arr
serait vide: []