js闭包

js闭包
要到创建这个函数的那个作用域中取值——是“创建”,而不是“调用”,切记切记
在fn函数中,取*变量x的值时,要到哪个作用域中取?——要到创建fn函数的那个作用域中取——无论fn函数将在哪里调用。

我们拿文字总结一下取*变量时的这个“作用域链”过程:
第一步,现在当前作用域查找a,如果有则获取并结束。如果没有则继续;
第二步,如果当前作用域是全局作用域,则证明a未定义,结束;否则继续;
第三步,(不是全局作用域,那就是函数作用域)将创建该函数的作用域作为当前作用域;
第四步,跳转到第一步。