2015-08-06 3 views
1

Очевидно, что внутренняя функция может обращаться к переменным внешней области видимости, например.Доступ к переменным внешнего объема с помощью скобок нотации

function example() { 
    console.log('My name is ' + name); 
} 

var name = 'Dave'; 
example(); 

Возможно ли получить доступ к этой переменной с помощью скобок? например

function example() { 
    console.log('My name is ' + outerScope['name']); 
} 

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

+0

Возможный дубликат [JavaScript: ссылка a функции локальной области как объекта] (http://stackoverflow.com/questions/2600361/javascript-reference-a-functions-local-scope-as-an-object) – doldt

ответ

2

Нет, это невозможно. Области не являются объектами, доступными из JS-кода, и не имеют свойств.

Вы можете использовать eval, хотя если вы хотите получить доступ к переменным по их имени со строкой. Кроме того, вы должны проверить, может ли ваша среда выполнения использовать API-интерфейс отладки, как правило, выставляет такую ​​информацию.

+0

Можете ли вы привести пример того, как я буду использовать 'eval' в этом случае? Например, в моей функции 'example()' выше? – maxedison

+0

'console.log ('My name is' + eval ('name'))' должен делать (конечно, он использует нормальное разрешение идентификатора, вы не можете получить доступ к теневым переменным или переменным в определенной области). – Bergi

+0

Отлично! Это достигает того, к чему я стремился. – maxedison

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