理解Javascript的閉包

2021-07-03 10:25:58 字數 1925 閱讀 7491

出處:

neo

內容摘抄:

閉包closure就是:

一些特點:

例子1:閉包中區域性變數是引用而非拷貝1

2

3

4

5

6

7

8

9

10

functionsay667()

num++;

returnsayalert;

}

varsayalert = say667();

sayalert()

因此執行結果應該彈出的667而非666。

例子3:當在乙個迴圈中賦值函式時,這些函式將繫結同樣的閉包1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

functionbuildlist(list)  );

}

returnresult;

}

functiontestlist()

}

testlist的執行結果是彈出item3 undefined視窗三次,因為這三個函式繫結了同乙個閉包,而且item的值為最後計算的結果,但是當i跳出迴圈時i值為3,所以list[3]的結果為undefined.

例子5:每次函式呼叫的時候建立乙個新的閉包1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

functionnewclosure(somenum, someref)

}

closure1=newclosure(40,);

closure2=newclosure(1000,);

closure1(5);// num:45 anarray[1,2,3,45] ref:'somevar closure1'

closure2(-10);// num:990 anarray[1,2,3,990] ref:'somevar closure2'

javaScript閉包理解

以下是樓主的見解,如有錯誤請幫忙矯正。以下是是乙個簡單的閉包例子 function creatfunc var myfunc creatfunc alert myfunc 變數variable是乙個閉包,閉包的生命週期一般為呼叫閉包的物件為空 null 時結束。舉乙個複雜點的例子 var singl...

javascript閉包理解2

今天又複習了一次閉包,參考文章在chrome開發者工具中觀察函式呼叫棧 作用域鏈與閉包,這樣在除錯中理解會更加深刻。閉包的形成需要兩個條件 1.在函式內部建立新的函式 2.新的函式在執行時,訪問了函式的變數物件 總結一下閉包 1.閉包是在函式被呼叫執行的時候才被確認建立的。2.閉包的形成,與作用域鏈...

javascript閉包的個人理解

1 在函式內部宣告變數的時候一定要用var命令。如果不用的話,實際上宣告了乙個全域性變數。2 在js中,對於變數,就是內部函式可以一直向上尋找父物件變數,內部函式可以訪問父函式定義的變數,但父函式不能訪問子函式變數。最簡單的理解就是兒子可以要父親的,父親要不了兒子的。3 閉包就是為了解決上述問題的,...