閉包:只需記住以下兩種情況:
1.函數(shù)作為返回值:

image.png
要點:閉包其實就是個函數(shù),在閉包里面調(diào)用外部的變量,變量的值取在創(chuàng)建這個閉包的作用域中來取;還有就是某個函數(shù)調(diào)用完之后,閉包的上下文環(huán)境不會緊接著就被銷毀,所以,使用閉包會增加內(nèi)存的開銷。
上下文環(huán)境和作用域:
1.上下文環(huán)境:可以理解為看不見摸不著的對象(有若干屬性),但是卻是的的確確存在的。因為所有定義的變量都在里面存儲著。另外,對于函數(shù)來說,上下文環(huán)境是在函數(shù)調(diào)用時創(chuàng)建的。
2.作用域:很抽象,除了全局作用域,只有函數(shù)才能創(chuàng)建作用域。創(chuàng)建了一個函數(shù)就創(chuàng)建了一個作用域,無論你調(diào)用與否,函數(shù)只要創(chuàng)建了,它就有獨立的作用域。
兩者的關系:一個作用域可能包含若干個上下文;有可能從來沒有過上下文(函數(shù)沒調(diào)用過);也有可能有過,但是在函數(shù)調(diào)用完之后,上下文環(huán)境就被銷毀了;還有可能同時存在一個或者多個(閉包的情況)。