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,打印出來。原型鏈