function foo() { console.log(a); }
function bar() {
var a = 3;
foo();
}
var a = 2;
bar(); // 2;
静态作用域 ,就是在它执行之前就已经确定了它的作用域 (定义的时候就已经确定了。)找不到变量 就会往原型链上查询变量
函数的作用域基于函数创建的位置
bar()执行时,执行foo(),foo定义在window下,内部找不到变量a,就往上找到window.a=2,打印出来。