如果在函数中创建回调,是否可以获取该回调以访问该函数中的局部变量?

Obj.prototype.outerFunc = function()
{
    var x = 0;
    var callback = this.innerFunc;
    callback();
}

Obj.prototype.innerFunc = function()
{
    x++;
}


x自然不在innerFunc的范围内,并且如果被自身调用会产生错误。但是,如果从outerFunc调用它,可以扩展innerFunc's范围以访问x吗?

编辑:应该提到我不想将参数传递给函数或使x和Obj的实例。我更希望将innerFunc视为在outerFunc中本地声明。与以下操作类似:

Obj.prototype.outerFunc = function()
{
    var x = 0;
    var callback = function() {
        x++;
    }
    callback(); // works
}

最佳答案

是的:这正是功能参数的用途。它们使您可以将值从一个范围传递到另一个范围。

Obj.prototype.outerFunc = function()
{
    var x = 0;
    var callback = this.innerFunc;
    x = callback(x);
}

Obj.prototype.innerFunc = function(x)
{
    x++;
    return x;
}


请注意,该值将发送到其他函数,而不是变量。因此,您需要返回值并对其进行分配才能使用它。

关于javascript - 在回调内部访问函数的局部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43018158/

10-09 17:36