如果在函数中创建回调,是否可以获取该回调以访问该函数中的局部变量?
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/