Для этого нет единственного решения (ну, есть eval
, но не стоит серьезно относиться к этому). Доступ к глобальным переменным возможен динамически через window
, но это не работает для переменных, локальных для функции.
Почти всегда есть лучшее решение, чем использование переменных переменных! Вместо этого вы должны смотреть на структуры данных и выбирать правильную для своей проблемы.
Если у вас есть фиксированный набор имен, например
// BAD
var foo = 42;
var bar = 21;
var key = 'foo';
console.log(eval(key));
сохранить эти имена / значения в качестве свойств объекта и использовать нотацию скобки для динамического поиска:
// GOOD
var obj = {
foo: 42,
bar: 21,
};
var key = 'foo';
console.log(obj[key]);
Если у вас есть «последовательные» нумерованные переменные, такие как
// BAD
var foo1 = 'foo';
var foo2 = 'bar';
var foo3 = 'baz';
var index = 1;
console.log(eval('foo' + index));
, тогда вы должны использовать массив и просто использовать индекс для доступа к соответствующему значению:
// GOOD
var foos = ['foo', 'bar', 'baz'];
var index = 1;
console.log(foos[index - 1]);