let 和 var 在 for 循环中的表现

这篇博客探讨了JavaScript中var和let关键字在for循环中的不同行为。var案例展示了由于变量提升,导致10个10的输出结果,而let案例则因块级作用域特性,每个循环迭代中创建独立的作用域,正确地按顺序输出0到9。这深入解释了JavaScript作用域的基本概念及其在实际编程中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var 案例

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

结果: 10 个 10
原因: 因为 i 是全局变量,最后访问的都是全局变量 i,而每次循环改变 i 的值就是改变后的全局变量的值,故而输出值为10

let 案例

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

结果: 0123456789
原因: 因为 let 是块级作用域,在 for 循环中,很明显我们是能找到一个 {} 构成的代码块的。每次循环都创建一个块级作用域,并且存上 i 的值,这里面的 let 定义的 i 值就是局部变量,所以每次循环改变的就是对局部变量赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值