闭包是干嘛的
當一個javascript函數返回時,js解析器會保留它作用域內的所有變量和函數。 注意兩個 返回,和作用域。之前已經寫了作用域鏈從內到外找變量的過程。但是這個變量第一次使用后,我還想再次使用,以這個變量為基礎,就需要閉包了。 [crayon-50361f9ff2957/] [crayon-50361f9ff2d3a/] js的垃圾回收機制同樣是對不再被其他對象引用的變量或方法進行回收,但因為js的引用不僅可指向變量,也可指向函數,在上述js代碼中, 只要指向函數c 的引用d 還沒有被設為null,那么處在函數c 作用域內的局部變量都不會被js垃圾回收器回收。 局部變量 b 被認為處在一個安全且相對封閉的“閉包”環境中,訪問它的唯一方法是通過調用處在同一作用域下的c 函數來進行。 直到c?函數不再被其他對象引用,其作用域內的變量和函數才能被釋放回收。 即c = null 根據之前的例子,我們可以用閉包模擬函數的私有變量 [crayon-50361f9ff3121/] [crayon-50361f9ff3508/] [crayon-50361f9ff38f1/] [crayon-50361f9ff3cd9/] ?本文地址:http://99jty.com/?p=427 ?訂閱本站:http://winysky.com/feed/?當你從RSS閱覽器里看到這篇文章時,還沒有評論,還不趕緊過來搶沙發?
轉載于:https://www.cnblogs.com/99f2e/archive/2012/03/07/2653126.html
總結
- 上一篇: XAF Study Recources
- 下一篇: C++ template 学习归纳2