1.首先setTimeout函数里面不能传递参数
for(var i = 0;i < 4;++i){
setTimeout(function(i){
console.log(i)
},100)
}
答案是undefined,这里虽然有考虑到函数是按值传递的,但是却没有拿到值,这个函数参数是否没有意义
for(var i = 0;i < 4;++i){
(function(num){
setTimeout(function(){
console.log(num)
},100)
})(i);
}这里就能得到预期的0,1,2,3
或者还有一种方式也能得到0,1,2,3
for (let i = 0; i < 4; ++i) {
setTimeout(function () {
console.log(i)
}, 100)
}
本文探讨了JavaScript中setTimeout函数的参数传递问题,通过不同方式展示了如何正确地在延时函数中使用循环变量,避免因作用域问题导致预期外的结果。
9522

被折叠的 条评论
为什么被折叠?



