2014-02-18 6 views
1

В ситуации, когда у меня есть что-то вроде этого кода:Определение переменных динамически в Javascript

var variableNames=["thisMonth", "thisDay"]; 
var variableValues=["February", 17]; 

Есть ли способ, которым я мог бы пройти через массив и инициировать переменные с соответствующими значениями? Я пробовал что-то вроде

for(var i=0;i<variableNames.length;i++){ 
    eval("var "+variableNames[i]+"="+variableValues[i]+";"); 
} 

Но я не получаю никаких результатов. Является ли eval неспособным определять переменные или существуют другие проблемы, которые существуют? Любое решение было бы весьма полезно.

+0

Зачем вам это нужно? Используйте объект. –

+0

Возможный дубликат http://stackoverflow.com/questions/12167800/using-eval-to-set-global-variables –

+0

Как указано выше; do 'obj [variableNames [i]] = variableValues ​​[i];' – Johan

ответ

1

Вам необходимо назначить переменные для объекта. Если вы хотите создать глобальные переменные, следует использовать следующий код:

for (var i=0; i<variableNames.length; i++) { 
    window[variableNames[i]] = variableValues[i]; 
} 

//test 
console.log(thisMonth); //"February"  
0

Здесь вы идете. Вы пропустили несколько цитат в "='" + variableValues[i] + "';");:

var variableNames=["thisMonth", "thisDay"]; 
var variableValues=["February", 17]; 
for(var i=0;i<variableNames.length;i++){ 
    eval("var "+variableNames[i]+"='"+variableValues[i]+"';"); 
} 

С этой коррекции, однако, я хотел бы предостеречь вас от использования его потому что это очень неправильный способ сделать это.

Использование объектов, как упоминает большинство здесь.

+1

Noooo .... не поощряйте злого 'eval'> :( – Johan

+0

Кто-то должен был выделить ошибку. Возможно, OP просто любопытен или, возможно, причина для этого. :) – loxxy

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