javascript - 访问回调内函数的局部变量

标签 javascript scope callback

如果我在函数内创建回调,我可以获得该回调来访问该函数内的局部变量吗?

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

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

x 自然不在 innerFunc 的范围内,如果单独调用会产生错误。但是,如果我从 outerFunc 调用它,我可以扩展 innerFunc 范围以访问 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/

相关文章:

javascript - 如果启用了 JavaScript,如何在网页上生成不同的链接?

r - 如何在 R 中将 mutate_at() 与两组变量一起使用

python - 如何从回调函数中中断Word2vec训练?

javascript - JavaScript 提示中的选定值

javascript - 如何流式传输数据以提供进度条

javascript - 获取不发送 Cookie

oauth - 细粒度的 Google OAuth 范围

android - 在 Alert Dialog Builder 中启动协程

javascript - 我们如何知道所有的异步操作、所有的回调都完成了,并等待它们

asynchronous - 如何:使用Netty与Avro进行异步回调