2015-06-26 15 views
0

Так что я некоторое время программировал и много раз натыкался на случай случайного генерирования имен переменных, которые могут быть использованы позже. Мне было интересно, возможно ли подобное с помощью простого javascript без библиотек и массивов, и как я буду это делать.Javascript произвольно сгенерированные имена переменных

Пример того, что я имею в виду (чтобы лучше показать, что я пытаюсь спросить) ->

function makeVariables(max) { 
    while(max < 10) { 
var c(max) = "test"; 
max++; 
} 
} 

Теперь говорят, что он произвел 10 переменных с именем: c0, c1, c2, c3, c4, c5, c6, c7, c8, c9.

А потом быть в состоянии назвать его позже как ...

оповещения (c4);

Хотя я знаю, что эти несколько строк кода не работают, я хотел бы (если это возможно) пример того, как я могу заставить его работать.

EDIT

У меня нет никаких проблем с массивами, я был просто интересно, если это было возможно. Я хочу сделать переменными, которые могут быть достигнуты, но на мой вопрос был дан ответ. Так что спасибо всем вам, помощникам!

+3

Что случилось с массивом? –

+0

Возможный дубликат [Как объявить и использовать динамические переменные в javascript?] (Http://stackoverflow.com/questions/5944749/how-do-i-declare-and-use-dynamic-variables-in-javascript) – CBroe

+0

, если вы ищете javascript для выполнения того же действия, что и PHP, тогда вам не повезло. Я имею в виду, что в PHP вы можете сказать следующее: '$ cool = 'test'', а затем' $$ cool = 5'. После этого переменная $ test будет равна 5. Как упоминалось выше, вы можете использовать eval или аксессуар окна, чтобы делать то, что вы хотите, но это немного взломан. – tylerism

ответ

2

Как о чем-то вроде:

function makeVariables(max, root) { 
    // this would allow you to pass in a different 'container' for the vars 
    root = root || window; 
    while(max < 10) { 
     root['c' + max] = 'test'; 
     max++; 
    } 
} 

, то вы можете сделать

makeVariables(10) 
alert(c4); 

, который так же, как (переменные хранятся в объекте окна, если вы не сдали 2-й параметров для функция makeVariables):

makeVariables(10) 
alert(window['c4']); 
+2

Почему у вас должна быть корневая переменная в функции? Не могли бы вы просто сделать 'window ['c' + max]' вместо 'root ['c' + max]'? И не могли бы вы также сделать 'alert (c4)' вместо 'alert (window ['c4'])? – Markasoftware

+1

Да, я просто пытался указать, где хранятся переменные, я немного отредактировал, поэтому сделайте это проще, надеюсь. :) – Jaime

Смежные вопросы