天天看點

C#和 JS的閉包

閉包的概念是内層的函數可以引用包含在它外層的函數的變量,即使外層函數的執行已經終止。但該

變量提供的值并非變量建立時的值,而是在父函數範圍内的最終值。

C#閉包可了解為跨作用域通路函數内變量,那麼如何避免閉包陷阱呢?C#中普遍的做法是,将匿名

函數引用的變量用一個臨時變量儲存下來,然後在匿名函數中使用臨時變量。JS閉包,在 js中的我的理

解就是函數嵌套函數,當内部函數在定義它的作用域的外部被引用時,就建立了該内部函數的閉包 ,如果内

部函數引用了位于外部函數的變量,當外部函數調用完畢後,這些變量在記憶體不會被釋放,因為閉包需要它們