当你定义一个函数,如果没有调用的话,函数是不会执行的,只有当你调用这个函数的时候才会执行。但是,函数的调用时机不同,函数的返回值是不同的。
代码环境一
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
// 打印出了6个6
代码环境二
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
// 打印出了0、1、2、3、4、5
这两个代码的执行时机是不一样的。“setTimeout” 意为“过一会儿执行”。
在代码环境一情况下,在循环外面声明一个变量i,进入for循环,当=0时,判断i<6,过一会儿打印i(想象有一个人,给他一个任务,让他记着过一会儿打印i),i自增变为1,判断i<6,过一会儿打印i(同样想象有一个人,给他一个任务,让他记着过一会儿打印i),依次循环,当i=2、3、4、5时,都找一个人记着一会儿打印i。当i=6时,i=6,退出循环,这个时候,开始打印i,此时i=6,共循环了6次,所以会打印6个6。
在第二种代码环境下,我也解释不清楚,死记!
第三种打印出0、1、2、3、4、5的方法
1、简单的for循环,没必要用setTimeout,功能实现了,也不增加理解难度😂:
let arr = [0, 1, 2, 3, 4, 5]
for(let i = 0; i<arr.length; i++){
console.log(arr[i])
}
// 打印出了0、1、2、3、4、5,
2、第三个参数来传参,
setTimeout ( code , ms ...) code:延迟时间到期之后执行的代码块 ms:延迟时间
for(var i=0;i<6;i++){
setTimeout((i)=>console.log(i),0,i)
}