閉包概念:
閉包就是就是函式的「堆疊」在函式返回後並不釋放, 當在乙個函式內定義內部函式就會產生閉包
當乙個內部函式被呼叫,就會形成閉包,閉包就是能夠讀取其他函式內部變數的函式
閉包就是函式的區域性變數集合,只是這些區域性變數在函式返回後會繼續存在。
舉個栗子:
期望返回結果:
內部函式中執行次數:0
內部函式中執行次數:1
內部函式中執行次數:2
內部函式中執行次數:3
內部函式中執行次數:4
1.初版js
/**
* main方法中返回一組函式,期望呼叫時返回不同的結果
*/function main());}
return arr;
}var arrs = main();
for(var i=0;i實際返回結果:
內部函式中執行次數:5
內部函式中執行次數:5
內部函式中執行次數:5
內部函式中執行次數:5
內部函式中執行次數:5
2.自執行函式概念
宣告乙個函式,立即執行
乙個立即呼叫的函式表示式可以用來鎖定值並且有效的儲存此時的狀態
引入閉包+自執行函式解決:
/*** main方法中返回一組匿名函式
*/function
main
() })(i));}
return arr;
}var arrs = main();
for(var i=0;i參考:
js函式的自執行和閉包
有些人叫這個是自執行的匿名函式 即便它不是 因為它沒有呼叫自身,它只是立即執行而已。function 為函式表示式新增乙個標示名稱,可以方便debug 但一定命名了,這個函式就不再是匿名的了 function foo 建立乙個立即呼叫的匿名函式表示式 return乙個變數,其中這個變數裡包含你要暴露...
for迴圈 js定時器 閉包 自執行函式
for迴圈 js定時器 閉包 自執行函式 前言 面試題目經常會出現這麼一道題目,請將1 10有序每隔一秒輸出。看似這個題目很簡單,但是確難倒了很多js初學者。還有跟這個類似情況,比如給五個dom新增hover事件,理想效果是列印出當前索引,知識都是列印出最後乙個值。錯誤 var len 10 for...
js函式閉包
閉包的好處 希望乙個變數長期駐紮在記憶體當中 避免全域性變數的汙染 私有成員的存在 舉例 function f1 x var b f1 2 x 2 b 10 相當於b f2 b f2 故y 10 匿名函式 function 該方法經常在全域性作用域中被用在函式外部,從而限制向全域性作用域中新增過多的...