JavaScript代码输出结果-for循环、setTimeout、let、var

for(var i = 0 ;i<3;i++){
    setTimeout(()=>console.log(i),1)
}

for (let i = 0; i < 3; i++) {
    setTimeout(()=>console.log(i),1)
}

A: 0 1 2 和 0 1 2 

B: 0 1 2 和 3 3 3

C: 3 3 3 和 0 1 2   ✔

*   由于JavaScript的事件执行机制,settimeout 函数真正被执行时,循环已经走完

*  第一个循环中的变量  i 是使用 var 关键字声明的, 因此该值是全局的

在循环期间,我们每次使用一元运算符 ++ 都会将 i 的值 增加  1 

再次在调用settimeout 时, i 的值已经是 3 了

*  第二个循环中,使用let关键字声明变量 i,

使用let (const)关键字声明的变量是具有块作用域的(块是{}之间的任何东西)

每次迭代, i  将被创建为一个新值,每个循环内的块级作用域都会有一个 i 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值