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
本文来自博客园,作者:ycccc丶,转载请注明原文链接:https://www.cnblogs.com/imycc/p/16473484.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)