for var 和 let

var 有变量提升
let 没有变量提升 不能重复声明 只在块级作用域生效
块级作用域:{}

var

  • var 有变量提升

  • var i 提升到全局作用域window 每次循环代码块执行之前给 i 赋值

  • 又因为for是同步代码 btns的单击响应函数是 异步代码

  • js是单线程的:先执行同步代码 再 执行异步代码

  • 由于for是同步代码 所以 for 循环完之后 才会 执行单击响应函数

  • 每次for 都给 i 赋值 所以 i 会被一直重复声明并赋值 直到不满足条件 i = 3

  • 所以 btns 的单击响应函数执行时 i 始终为 3

let

  • let没有变量提升

  • 只在块级作用域中生效,不能重复声明,但不影响作用域链

  • 每次for循环的块级作用域是不同的,所以避免了let的重复声明

  • 每次for循环都 let i = xxx

  • 关键是let只会在当前块级作用域中生效

  • 所以单击响应函数执行时 i 始终为 xxx 不会改变

  • 下次单击响应函数执行前 let i = xxx + 1

  • 下次单击响应函数执行时 i 为 xxx + 1

posted @   ycccc丶  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
//背景线条
点击右上角即可分享
微信分享提示