閉包:只需記住以下兩種情況:
1.函數(shù)作為返回值:
要點(diǎn):閉包其實就是個函數(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)建了,它就有獨(dú)立的作用域拜银。
兩者的關(guān)系:一個作用域可能包含若干個上下文殊鞭;有可能從來沒有過上下文(函數(shù)沒調(diào)用過);也有可能有過尼桶,但是在函數(shù)調(diào)用完之后操灿,上下文環(huán)境就被銷毀了;還有可能同時存在一個或者多個(閉包的情況)泵督。