導航:首頁 > 編程語言 > 閉包代碼

閉包代碼

發布時間:2023-09-20 09:56:09

js閉包怎麼寫

varresult=[];
functionfoo(){
vari=0;
for(;i<3;i=i+1){
result[i]=function(){
alert(i)
}
}
};
foo();
result[0]();//3
result[1]();//3
result[2]();//3

這段代碼中,程序員希望foo函數中的變數i被內部循環的函數使用,並且能分別獲得他們的索引,而實際上,只能獲得該變數最後保留的值,也就是說.閉包中所記錄的自由變數,只是對這個變數的一個引用,而非變數的值,當這個變數被改變了,閉包里獲取到的變數值,也會被改變.


解決的方法之一,是讓內部函數在循環創建的時候立即執行,並且捕捉當前的索引值,然後記錄在自己的一個本地變數里.然後利用返回函數的方法,重寫內部函數,讓下一次調用的時候,返回本地變數的值,改進後的代碼:

varresult=[];
functionfoo(){
vari=0;
for(;i<3;i=i+1){
result[i]=(function(j){
returnfunction(){
alert(j);
};
})(i);
}
};
foo();
result[0]();//0
result[1]();//1
result[2]();//2
閱讀全文

與閉包代碼相關的資料

熱點內容
編程適合什麼筆記本 瀏覽:783
c讀文本到資料庫 瀏覽:981
2010word文字背景顏色怎麼去掉 瀏覽:515
網路安全情況核查台賬是什麼 瀏覽:590
linuxwtmp查看 瀏覽:947
app掛號怎麼拿單 瀏覽:902
如何用手機編程出一個心形 瀏覽:934
蘋果不是原裝的數據線哪個好 瀏覽:471
不越獄多開應用程序 瀏覽:922
iphone4揚聲器壞了 瀏覽:106
銳捷網路校招筆試題 瀏覽:192
多可網路爬蟲軟體怎麼用 瀏覽:172
miui微信表情包在哪個文件夾 瀏覽:939
我的微信是不是別人看不到了 瀏覽:193
真實女友2安卓版 瀏覽:301
win81文件夾菜單 瀏覽:336
工作中編程看什麼書 瀏覽:9
未來數據科技有哪些書 瀏覽:243
電腦如何找迴文件 瀏覽:950
簡應用安卓 瀏覽:578

友情鏈接