如果我在函数中创建回调函数,我可以通过回调函数访问函数中的局部变量吗?在回调函数内部访问函数的局部变量
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和大多数语言都有*词法范围*。 –