更改JavaScript中的函数上下文(用于访问局部变量)

更改JavaScript中的函数上下文(用于访问局部变量),javascript,Javascript,是否可以在另一个上下文中运行函数,在该上下文中可以访问局部变量 我做了这个概念证明: var t = (function() { "use strict"; var ab = 5; var f = (function(t) { return function(c){ c.call(t); } })(t); return f; })(); t(function() { return ab; }); 这给了我这个错误:

是否可以在另一个上下文中运行函数,在该上下文中可以访问局部变量

我做了这个概念证明:

var t = (function()
{
    "use strict";
    var ab = 5;

    var f = (function(t)
    {
        return function(c){ c.call(t); }
    })(t);

    return f;

})();

t(function()
{
    return ab;
});
这给了我这个错误:ReferenceError:ab没有定义


有没有一种方法可以让我传递给
t
的匿名函数访问局部变量
ab

不幸的是(或幸运的是),您不能这样做。这里出现的问题是,您不能从函数(上下文)中“传递”这样的被称为激活对象
Function.prototype.apply
.call
只能提供从任何常规Javascript对象设置函数上下文的选项,但
形式参数、函数声明和变量
不存储在任何“常规”对象中。这些值保存在下面的作用域链中,并存储在您无法直接从Javascript访问的所谓激活对象(或词法环境记录)中。

想象一下调试情况吧?感谢您的声明。这是非常有用的。那么,在另一个上下文中没有一个表单可以通过“call”方法访问“var”?