《JS語言精粹》學習筆記 函式部分 閉包

2022-07-05 01:15:11 字數 540 閱讀 7346

要理解閉包,首先要理解變數作用域,變數的作用域就兩種,全域性變數和區域性變數,函式內部可以直接讀取全域性變數,函式外部無法讀取函式內部的區域性變數。

閉包定義:能讀取函式內部區域性變數的函式就是閉包,而只有函式內部的子函式才能讀取區域性變數,所以本質上,閉包就是將函式內部和函式外部鏈結起來的一棟橋梁。

閉包作用:乙個是可以讀取函式內部的區域性變數,乙個是讓這些變數的值始終儲存在記憶體中。

注意事項: 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...