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