结论: 1. 函数不论在哪执行,它的上级上下文,一定是它的作用域,而作用域是和在哪创建的有关系。 2. 所以无论函数在哪执行,遇到变量不是自己私有的,都会按照作用域链查找其上级上下文中是否有,作用域链只和在哪创建的有关系,和在哪执行是没有关系的。 求输出的答案 var i = 10; function A() { var i = 10; function x() { console.log(i); } return x; } var y = A(); y(); --> 10 function B() { var i = 20; y(); --> 10 } B();