闭包:只需记住以下两种情况:
1.函数作为返回值:
要点:闭包其实就是个函数,在闭包里面调用外部的变量,变量的值取在创建这个闭包的作用域中来取;还有就是某个函数调用完之后,闭包的上下文环境不会紧接着就被销毁,所以,使用闭包会增加内存的开销。
上下文环境和作用域:
1.上下文环境:可以理解为看不见摸不着的对象(有若干属性),但是却是的的确确存在的。因为所有定义的变量都在里面存储着。另外,对于函数来说,上下文环境是在函数调用时创建的。
2.作用域:很抽象,除了全局作用域,只有函数才能创建作用域。创建了一个函数就创建了一个作用域,无论你调用与否,函数只要创建了,它就有独立的作用域。
两者的关系:一个作用域可能包含若干个上下文;有可能从来没有过上下文(函数没调用过);也有可能有过,但是在函数调用完之后,上下文环境就被销毁了;还有可能同时存在一个或者多个(闭包的情况)。