定義:
在乙個內部函式裡, 對在外部作用域(但不是在全域性作用域) 的變數進行引用, 那麼內部函式就被認為是閉包(closure)。
例子:
1defmake_adder(addend):
2def
adder(augend):
3return augend +addend
4return
adder
6 p = make_adder(23)
7 q = make_adder(44)89
print p(100)
10print q(100)
1112
執行結果:
13 123
14 144
閉包必須滿足三個條件:
1. 必須有內嵌函式
2. 內嵌函式必須引用外部函式中的變數
3. 外部函式返回值必須是內嵌函式.
使用閉包注意事項:
1.閉包中是不能修改外部作用域的區域性變數的
2.通過return返回的每乙個閉包內的活動物件都是獨立的
作用:
用途1:當閉包執行完後,仍然能夠保持住當前的執行環境。
用途2:閉包可以根據外部作用域的區域性變數來得到不同的結果。
JS 閉包的那些事兒
簡而言之 內部函式被外部函式之外的其他變數引用時,就形成了閉包。在js裡,如果乙個物件不再被引用時,就會被gc 否則就一直儲存在記憶體中。當我們需要在模組中定義一些變數,並希望這些變數一直儲存在記憶體中但又不會 汙染 全域性的變數時,就可以用閉包來定義這個模組。functiona returnb v...
npm發布包的那些事
正確的發包步驟 不夠清楚?上圖 npm err need auth auth and email requiredfor publishingnpm err need auth you need to authorize this machine usingnpm adduser錯誤。npm err...
Charles抓包的那些事
前言 作為移動端開發人員用的最多的抓包工具就是charles,但是我近幾年一直做pc端的前端開發工作,感覺chrome的devtools已經滿足了日常的工作需求 對於charles的使用也很少。最近開始做一些webview的開發,對於灰度環境,線上環境的bug還是需要用到charles的,所以這篇文...