如果我在函數中創建回調函數,我可以通過回調函數訪問函數中的局部變量嗎?在回調函數內部訪問函數的局部變量
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和大多數語言都有*詞法範圍*。 –