我正在學習JS中的詞彙範圍和執行上下文,並且遇到了一個問題。爲什麼在引用外部環境時不能訪問這個特定的變量?
我對關鍵字this
的理解可能有限,但我發現它引用了任何函數的當前執行上下文中的所有變量。
考慮這個例子:
function b(){
console.log(this);
}
var myVar = 1;
b();
在這裏,我會得到一個控制檯日誌myVar的,將被分配到現在價值1
這個例子:
function a(){
function b(){
console.log(this);
}
var myVar = 2;
b();
}
var myVar = 100;
a();
當函數b被調用時,我看到myVar的引用,它被分配到100.爲什麼沒有myVar的引用被賦值爲2?
這不是指當前函數的詞法環境嗎?在這種情況下,函數b被包含在函數a中而不是全局環境中。
在函數a的上下文中是不是b?因此函數b作爲函數a中的外部環境的參考? –
@ user3882106 - 不會。正如我所說的,上下文是由函數的調用方式決定的,而不是聲明的地方。請參閱http:// stackoverflow。com/questions/3127429/how-this-this-keyword-work。不要混淆上下文和範圍。 – Quentin