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

閉包代碼

發布時間: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
閱讀全文

與閉包代碼相關的資料

熱點內容
如何在手機里創建excel文件 瀏覽:172
電腦升級配置下載 瀏覽:44
蘋果系統鈴聲文件位置 瀏覽:663
又如何處理數據 瀏覽:44
文明5美麗新世界升級擋 瀏覽:30
數據源文件可以用什麼 瀏覽:614
fw文件找不到 瀏覽:192
蘋果沒法粘貼文件 瀏覽:643
rnn不能處理什麼數據 瀏覽:109
硬筆書法工具 瀏覽:357
文件的頭部和後部內容 瀏覽:917
50g的視頻文件刻錄大概多少錢 瀏覽:737
hbasejavaapi 瀏覽:983
cad每次關閉會自動保存一個文件 瀏覽:49
js點擊上滑下滑效果 瀏覽:191
怎樣在看過的pdf文件做標記 瀏覽:320
js數字轉時間 瀏覽:600
pdf文件不能在文件夾內預覽 瀏覽:837
angularjsapi中文 瀏覽:405
怎麼在兩個表格里找出相同的數據 瀏覽:650

友情鏈接