词法作用域就是说在词法分析的时候就已经形成了的作用域。这个时候已经定死了。如果一个函数在全局里面声明了,她的父级作用域就是全局作用域。一个函数的作用域只有可能存在于一个父级作用域里面。不会同时存在两个父级作用域。
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就是与函数在哪里调用有关。
时间: 2024-11-03 20:55:24