最常用的一種形式是函數作為傳回值被傳回
一種變形的形式是将内部函數指派給一個外部變量
閉包可以通過函數參數傳遞函數的形式來實作
由前面的示例代碼可知,函數F()都是在聲明後立即被調用,是以可以使用IIFE來替代。但是,要注意的是,這裡的Inner()隻能使用函數聲明語句的形式,而不能使用函數表達式。詳細原因移步至此
在閉包問題上,最常見的一個錯誤就是循環指派的錯誤。關于其錯誤原因的詳細解釋移步至此
正确的寫法如下
我們通過提供getter()和setter()函數來将要操作的變量儲存在函數内部,防止其暴露在外部
我們經常使用閉包來實作一個累加器
類似地,使用閉包可以很友善的實作一個疊代器
console.log(next());//'a'console.log(next());//'b'console.log(next());//'c'
本文轉自 sshpp 51CTO部落格,原文連結:http://blog.51cto.com/12902932/1924094,如需轉載請自行聯系原作者