天天看點

閉包的7種形式

根據閉包的定義,我們知道,無論通過何種手段,隻要将内部函數傳遞到所在的詞法作用域以外,它都會持有對原始作用域的引用,無論在何處執行這個函數都會使用閉包。接下來,本文将詳細介紹閉包的7種形式

  最常用的一種形式是函數作為傳回值被傳回

  一種變形的形式是将内部函數指派給一個外部變量

  閉包可以通過函數參數傳遞函數的形式來實作

  由前面的示例代碼可知,函數F()都是在聲明後立即被調用,是以可以使用IIFE來替代。但是,要注意的是,這裡的Inner()隻能使用函數聲明語句的形式,而不能使用函數表達式。詳細原因移步至此

  在閉包問題上,最常見的一個錯誤就是循環指派的錯誤。關于其錯誤原因的詳細解釋移步至此

  正确的寫法如下

  我們通過提供getter()和setter()函數來将要操作的變量儲存在函數内部,防止其暴露在外部

  我們經常使用閉包來實作一個累加器

  類似地,使用閉包可以很友善的實作一個疊代器

本文轉自xsster51CTO部落格,原文連結: http://blog.51cto.com/12945177/1948454,如需轉載請自行聯系原作者

繼續閱讀