要理解閉包,首先要理解變數作用域,變數的作用域就兩種,全域性變數和區域性變數,函式內部可以直接讀取全域性變數,函式外部無法讀取函式內部的區域性變數。閉包定義:能讀取函式內部區域性變數的函式就是閉包,而只有函式內部的子函式才能讀取區域性變數,所以本質上,閉包就是將函式內部和函式外部鏈結起來的一棟橋梁。
閉包作用:乙個是可以讀取函式內部的區域性變數,乙個是讓這些變數的值始終儲存在記憶體中。
注意事項: 1)由於閉包會使函式中的變數儲存在記憶體中,記憶體消耗很大,所以不能濫用。解決辦法是在退出函式之前,將不使用的區域性變數全部刪除。
2)閉包會在父函式的外部,改變父函式變數的值。所以,如果你把父函式當物件使用,把閉包當做它的公用方法,把內部變數當做它的私有屬性。這時不能隨便修改父函式內部變數的值。12
36970171
272373
474575
76
什麼是閉包:當函式在定義它的作用域的外部被引用時,就建立了該內部函式的閉包,如果內部函式引用了位於外部函式的變數,當外部函式呼叫完畢後,這些變數在記憶體不會被釋放,因為閉包需要它們。
關於JS函式部分的筆記
首先來理解一下什麼事物件 ecma 262是這樣定義的 無序屬性的集合,其屬性可以包含基本值 物件或者函式 也就是說,物件是 名 值 對的集合。var person new object person.name jake person.age 18 person.sayname function 上...
C語言例項解析精粹學習筆記 32
例項32 編制乙個包含姓名 位址 郵編和 的通訊錄輸入和輸出函式。思路解析 1 用結構體來完成姓名 位址 郵編和 的組合。2 結構體指標的使用。3 malloc的使用 4 scanf函式的返回值是正確輸入的變數個數 程式 如下 1 include 2 include 3 include 45 def...
C語言例項解析精粹學習筆記 26
例項26 阿拉伯數字轉換為羅馬數字,將乙個整數n 1 9999 轉換為羅馬數字,其中數字和羅馬數字的對應關係如下 原書中的開發環境很老,我也沒有花心思去研究。自己在codeblocks中進行開發的,所以程式與原書中的程式有很多地方不同,但是關鍵的一些程式還是採用原書中的 1 include 2 in...