我正在学习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