javascript - 为什么增量器打印 3 即使条件检查小于 3?
问题描述
对于下面的代码输出将打印 3 次“3”,即更新相同的变量 3 次
for(var k=0;k<3;k++){
setTimeout(()=>{
console.log(k)
},1000)
}
同样,如果我使用 let 而不是 var 1,2,3
for(var k=0;k<3;k++){
setTimeout(()=>{
console.log(k)
},1000)
}
我知道为什么它打印 0,1,2 因为 i 每次都不一样。我只是想知道为什么它在 var 作为条件的情况下打印 3 是为了检查小于 3?
解决方案
该函数setTimeout
将在提供的延迟后执行。由于 javascript 基于并发模型和事件循环,因此代码执行不会停止,因此执行会一直持续到提供的延迟。在这种情况下,增加 k。此外,后增量运算符将使用迭代前的值。因此,对于最后一次迭代,k 的值为 3,但由于我们给出了延迟,它每次都会打印 3。
推荐阅读
- regex - 正则表达式在行中查找特定单词。搜索()函数
- python - tox, pd.read_html 即使在 requirements.txt 中也找不到 lxml
- css - 如何更改 kasper 主题中的背景颜色?
- python - 加快 gzipped jsonlines 文件的解析
- r - 如何将table1包输出表保存为.doc格式?R
- python - 创建子集数据集:过滤器函数返回一个系列,但返回标量 bool
- excel - 在 Excel 中从数组公式结果中检索范围而不是字符串
- mysql - MySQL 中存储过程的 SELECT ... INTO OUTFILE 语句
- html - 如何在跨度中换行
- python - 将 Numpy 数组转换为列表会打印出额外的零?Python