переменные-переменные внутри области действия функции - PullRequest
2 голосов
/ 04 декабря 2009

Прежде чем вы спросите ... Я не планирую делать это на самом деле. Это плохая практика по понятным причинам. Мне просто любопытно, если это возможно.

В javascript вы можете использовать скобочный синтаксис для создания переменных-переменных в глобальной области видимости:

var var_name  = 'my_var',
    var_value = 'my_value';

window[var_name] = var_value;

alert( my_var ); // Works! alerts user: 'my_value'

Однако, когда вы находитесь внутри функции и используете ключевое слово 'var', создаваемые переменные локально ограничиваются функцией, в которой они объявлены. Есть ли какой-либо объект, который можно использовать с синтаксисом скобок ( как окно), чтобы получить доступ к локально переменным областям видимости? Как то так:

this_function[var_name] = var_value;

Я сомневаюсь, что это возможно, но подумал, что попрошу только пинки.

1 Ответ

2 голосов
/ 04 декабря 2009

Нет, нет объекта, который можно использовать для доступа к var переменным в контексте функций (даже если они являются свойствами объекта, называемого «переменным объектом» этого контекста выполнения; объект не имеет открытого имени и поэтому не может быть доступ напрямую). Элемент var в глобальном контексте - это особый случай, и вы не должны на него полагаться (хотя спецификация его определяет). Если вы хотите получить доступ к этим переменным как к свойствам глобального объекта (window, в случае веб-браузеров), явным образом присвойте им свойства window вместо использования var для ясности:

window.x = 'my value';

или, если вы предпочитаете:

window["x"] = 'my value';

(Эти два оператора имеют одинаковые результаты, оба создают / устанавливают свойство с именем "x" для объекта window.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...