js词法做用域(静态做用域)

function foo() { console.log(a); } 

function bar() {
 var a = 3; 
 foo(); 
} 

var a = 2; 

bar(); // 2;

静态做用域 ,就是在它执行以前就已经肯定了它的做用域 (定义的时候就已经肯定了。)找不到变量 就会往原型链上查询变量函数

函数的做用域基于函数建立的位置code

 

bar()执行时,执行foo(),foo定义在window下,内部找不到变量a,就往上找到window.a=2,打印出来。原型链

相关文章
相关标签/搜索