1. 程式人生 > >閉包知識

閉包知識

但是 可能 .com 捕獲 原本 什麽 img bubuko 什麽是

技術分享圖片

搞清楚上面5點,就差不多可以了

什麽是閉包:閉包就是裏面有一個函數,和被這個函數捕獲的一些變量 比如 a b

技術分享圖片

閉包的兩種情況:上圖是其中一種,一共有兩種如下圖:

技術分享圖片

查看閉包:chrome瀏覽器打斷點可以查看到 各個瀏覽器查看閉包裏的內容可能有差別

技術分享圖片

如果 f2中沒使用父裏面的變量 則不會產生閉包:

技術分享圖片

沒用父的,用的是父的父 會產生閉包:

技術分享圖片

註意f2在外面(return返回 )會產生閉包 不是這樣的 ,在f1裏面的f2也會產生閉包:

技術分享圖片

閉包的創建時機:js運行的詞法分析階段(全文掃描js代碼)時候就已經產生了,只是沒有工具可以看到

閉包的本質:就是形成的一個作用域鏈:

技術分享圖片

閉包的好處:

技術分享圖片

減少全局變量:

原本通過全局變量解決方案: 右邊錯誤的方式,不能起到每次調用add(),a的值會累計的情況下+1,左邊的方式可以達到但是要通過全局變量的方式

技術分享圖片技術分享圖片 技術分享圖片

閉包可以在不使用全局變量的方式下實現:調用一次後 ,第二次a依然不變 繼續累加 保留了上一次a的值

技術分享圖片

減少傳遞給函數的參數數量:

技術分享圖片

閉包知識