У меня есть следующая функция
function myFunction(){
var foo = "My Foo String";
}
Я хотел бы получить доступ к моей переменной следующим образом
function myFunction(){
var foo = "My Foo String";
console.info(SOMETHINGIDONOTKNOWABOUT["foo"]);
}
Я знаю, что в javascript можно использовать window ["yourvariablename"] для доступа к нему, но мне интересно получить доступ к переменной функции аналогичным образом, поэтому Есть ли способ получить доступ к переменной javascript, используя строку, содержащую имя переменной? не является дубликатом. Eval для меня не правильный ответ.
нет, не могу, потому что переменная вызывается динамически. Он представляет собой строковое представление внутри объекта.
Вы не можете получить доступ к локальным переменным в одной функции из контекста вне этой функции. Изнутри функции вы можете получить доступ к переменным по имени, но не динамически, аналогично window["someName"].
eval - это ответ Только для доступа к локальным переменным по имени. Если вы не хотите этого делать (да и не должны), тогда не обращаться к локальным переменным по имени. Какой у вас актуальная проблема?
@Pointy Ну Это та же функция. Я хочу получить к нему доступ из моей функции. Я просто не знаю, как получить доступ ко всем переменным, которые находятся внутри функции, так же, как работает window ["variablename"]
Нет хорошего способа сделать это. Вы можете использовать [ ] для динамического доступа к свойствам объекта, что и включает в себя window["someName"], но нет объекта, на который можно было бы ссылаться таким образом в случае локальных переменных. (Это возможно с eval(), но, как правило, для этого нет веских причин, и это серьезно сказывается на производительности, если вы заботитесь о подобных вещах.)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если я правильно понял ваш вопрос, вам следует использовать foo без кавычек:
window[foo]
Просто обратите внимание, что размещение значений в глобальной области видимости - плохая практика.
Я не думаю, что это правильный ответ, поскольку моя переменная находится внутри функции, поэтому я не могу получить к ней доступ с помощью window []
Не делай этого. Динамические переменные действительно раздражают при отладке и оптимизации браузером.
Используйте набор, карту, создайте для него класс или даже простой объект для хранения вещей, к которым вы хотите иметь доступ с помощью строки.
function myFunction() {
var myData = {
"foo": "My foo string"
};
console.info( myData[ "foo" ] );
}
Следующий фрагмент - это то, чего вы пытаетесь достичь?
Если вы хотите использовать переменную в качестве имени элемента массива, вам не нужно использовать кавычки. то есть array["foo"] должен быть array[foo], если foo является переменной.
var array = [];
array['foo'] = 'bar';
// Code #1
function myFunction(element) {
console.info(array[element]);
}
myFunction('foo');
// Code #2
function myFunction() {
element = 'foo';
console.info(array[element]);
}
myFunction();Надеюсь, это хоть как-то поможет.
@trixo а где определяется ваш массив? Я предполагал, что это было глобально. Кстати, я добавил еще один код.
Извините, я не заметил вашего комментария. Массив отсутствует. Вы можете использовать window ["variableName"] для доступа к переменным окна со строкой, представляющей имя переменной.
Мне очень трудно понять, о чем вы здесь спрашиваете. Разве нельзя просто использовать
foo?