Javascript 局部作用域对象

Javascript 局部作用域对象,javascript,Javascript,我只是好奇JavaScript中是否有“局部范围对象”这样的东西。如果调用一个函数,它有一个上下文(this),这是它被调用的对象(function f(){return this;};obj.f=f;obj.f();//returns obj;),以及在每次函数调用时创建的范围。该范围用于定义局部变量,如下例所示: var globalScopeVar = 1; (function() { var localScopeVar = 2; })(); 在这两个作用域中,此引用全局上下文(

我只是好奇JavaScript中是否有“局部范围对象”这样的东西。如果调用一个函数,它有一个上下文(
this
),这是它被调用的对象(
function f(){return this;};obj.f=f;obj.f();//returns obj;
),以及在每次函数调用时创建的范围。该范围用于定义局部变量,如下例所示:

var globalScopeVar = 1;
(function() {
    var localScopeVar = 2;
})();
在这两个作用域中,
引用全局上下文(通常为
窗口
),因为函数未在任何对象上调用。不过,我感兴趣的是“范围对象”,即定义范围内变量的对象。对于全局范围,这通常是
窗口
,就像全局上下文一样:

window.globalScopeVar; // 1
但是,函数调用的本地范围中的“范围对象”是什么?它是否存在或可访问?有没有办法访问定义了
localScopeVar
的对象

(function() {
    var localScopeVar = 2;
    localScope.localScopeVar; // 2
})();

本例中的
localScope
是什么?

作为对您的问题的回答,ECMAScript语言规范说明如下:

ECMAScript程序不可能直接访问或 操纵这些值


“它是否存在或是否可访问?”是的,它存在,但不,您无法访问它。我认为“localScope”是第一行中定义的立即闭包的范围。由于这个闭包本质上是一个立即执行的匿名函数(第4行),所以您不能引用它。作用域实际上是写入脚本文件的,您不能以编程方式对其进行更改。此外,函数不知道它在其中定义的对象,除非您不创建包含此信息的变量。