Мне просто интересно, существует ли такая вещь, как «объект локальной области видимости» в JavaScript. Если вы вызываете функцию, она имеет контекст(), который является объектом, на который он был вызван (function f() {return this;}; obj.f = f; obj.f(); //returns obj;
), и область, которая создается при каждом вызове функции. Объем используется для определения локальных переменных, как показано в следующем примере:Локальный объект области
var globalScopeVar = 1;
(function() {
var localScopeVar = 2;
})();
В обоих областей this
относится к глобальной связи (как правило, window
), так как функция не была вызвана на любой объект. Тем не менее, меня интересует «объект области видимости», т. Е. Объект, в котором определены переменные в пределах области. Для глобального масштаба это обычно window
, так же, как глобальный контекст:
window.globalScopeVar; // 1
Однако то, что это «сфера объекта» в локальной области видимости вызова функции? Он существует или доступен? Есть ли способ доступа к объекту, на котором определено значение localScopeVar
?
(function() {
var localScopeVar = 2;
localScope.localScopeVar; // 2
})();
Что такое localScope
в этом примере?
* «Он существует или доступен?» * Да, он существует, но нет, вы не можете получить к нему доступ. – dfsq
Я думаю, что «localScope» - это область непосредственного закрытия, определенная в первой строке. Поскольку это закрытие по сути является анонимной функцией, которая выполняется немедленно (строка: 4), вы не можете ссылаться на нее. –
Обратите внимание, что объекты не создают области видимости, работают только функции. Объем буквально записывается в файл сценария, и вы не можете его программно изменить. Кроме того, функция не знает об объекте, в котором она определена, если вы не создадите переменную, содержащую эту информацию. – Teemu