《JS 函数的执行时机》

发布于:2023-03-12 ⋅ 阅读:(381) ⋅ 点赞:(0)
为什么该循环打出的结果是6个6
let i = 0     
for(i = 0; i<6; i++){ 
  setTimeout(()=>{   
    console.log(i)
  },0)
}
//打印结果: 6,6,6,6,6,6
  1. 上段代码中 setTimeout 的作用是在0秒后打印出 i 的值
  2. for循环执行结束之后 i 的值是 6
  3. 由此该循环打印的结果是6个6
写出打印 0、1、2、3、4、5 的方法

可以用 for 循环搭配 let 满足这个幻想
在 for 和 let 一起用的时候,每次循环都会创建一个 i ,
setTimeout 便会在每一次循环都打印 i 的值,而不是循环结束之后再打印

for(let i = 0; i<6; i++){   //在for循环中声明 i 的值
  setTimeout(()=>{    
    console.log(i)
  },0)
}
//打印结果: 0,1,2,3,4,5
用传参的方式打印 0、1、2、3、4、5
let f = (x) => {
console.log(x)
}     
for (i = 0; i < 6; i++){ 
setTimeout(f(i), 0) 
} 
// 打印结果: 0,1,2,3,4,5

把 i 每次循环的数作为实参赋值给形参
这样函数里 console.log 会按照次序打出0,1,2,3,4,5


网站公告

今日签到

点亮在社区的每一天
去签到