js 如何給回調函數傳參


簡單的同步輸出

先看一個例子

for(var i=0;i<5;i++){
   console.log(i)
}

這個代碼很簡單,會輸出01234

image-20210303135432161

加上setTimeout

那如果加上setTimeout呢,例

for(var i=0;i<5;i++){
    setTimeout(function(){
        console.log(i)
    },i)
}

執行結果就會變成這樣

image-20210303135734240

輸出55555,聰明如你 你會想到是因為異步回調的原因

這時候我想讓這個回調函數里面的跟前面一樣怎么辦呢?

閉包保存變量

如果需要保持setTimeout打印正確的值,那就需要閉包了

例:

for(var i=0;i<5;i++){
	(function(i){
		setTimeout(function(){
            console.log(i)
        },i)
	})(i)
}

結果如圖

image-20210303141404797


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM