函数的作用域和运行时的作用域:
函数调用后运行的地方就是在写函数代码的地方(定义和声明的地方)运行代码,不是在调用代码的地方运行代码
函数在声明和定义时就有了它所在的作用域,但是函数的调用可能发生在其他作用域,运行代码时一定是去它声明和定义的作用域执行代码。
function fn(){
var a=10;
return function fm(){console.log(a)};
};
var a=100;
fn()();
虽然第二个小括号是在全局作用域调用运行fm函数,但是fm函数定义的作用域在fn内部,因此执行代码的作用域在fn内部