词法作用域 无论函数在哪里被调用,何时被调用,它的词法作用域都由它所定义的位置所决定; function foo() { console.log(a) } function bar() { var a = 4; foo(); } var a = 2; bar() // 输出: 2 因为foo是定义在window上的,因此从foo内部找不到会到window上去找; js使用的是词法作用域,如果是动态作用域,会基于调用栈去找,输出就会是4了;