词法作用域就是说在词法分析的时候就已经形成了的作用域。这个时候已经定死了。如果一个函数在全局里面声明了,她的父级作用域就是全局作用域。一个函数的作用域只有可能存在于一个父级作用域里面。不会同时存在两个父级作用域。
var a = 2;
function foo() {
console.log( a );
console.log(this.a);
console.log(this);
}
function bar() {
var a = 3;
foo();
}
bar(); //2. 2. window
而如果是动态作用域的话,不关心在哪里声明的,只关心他是在哪里调用的。动态作用域是基于调用栈的。而不是代码中的嵌套关系。js中this就是与函数在哪里调用有关。