【发布时间】:2017-03-25 15:23:03
【问题描述】:
如果我在函数中创建回调,我可以让该回调访问该函数中的局部变量吗?
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
}
【问题讨论】:
-
唯一的方法是
outerFunc将x放在共享范围内。全局范围在所有函数之间共享。但是没有办法直接影响被调用者的范围。基本上你所追求的是动态范围。 JavaScript 和大多数语言都有词法范围。
标签: javascript scope callback