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,打印出来。原型链