如果我在函数内创建回调,我可以获得该回调来访问该函数内的局部变量吗?
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/