先来一炮尝尝: var i = 10; function myFunc(){ var i = 20; function innerFunc(){ alert(i); } return innerFunc; } var func = myFunc(); func(); 此栗为什么弹出20,而不是10?为什么定义在 myFunc 内部的 innerFunc 返回了以后,还能访问到 myFunc 内部的变量 i ? 这是因为在 innerFunc 返回了以后,仍然保留着函数运行的实例.执行环境和作用域…