javascript - 对 JavaScript 的 var 作用域感到困惑
问题描述
我对以下代码的输出感到困惑:
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
}, i * 1000 );
}
输出为 5 5 5 5 5,每个 5 之间有 1 秒的延迟。
我知道 var 是函数作用域,但 setTimeout 中的函数也在 for 循环中。为什么输出不是 0 1 2 3 4,0 和 1 之间有 1 秒延迟,1 和 2 之间有 2 秒延迟,2 和 3 之间有 3 秒延迟,之间有 4 秒延迟3和4?
解决方案
推荐阅读
- java - JEP 323 java-11 中的@Notnull 在哪里
- flutter - 迁移到 AndroidX 后构建失败并出现最新依赖项
- vector - 有没有办法转换 ChunkMut
从 Vec::chunks_mut 到切片 &mut [T]? - javascript - 不适用于 Vue js 和 Laravel 5.7 的“CORS”
- c++ - 将双精度插入 char* 数组元素
- c++ - 通过重用模板模板参数创建类型
- java - Android AppWidget ListView 不会填充
- javascript - Angular 6 中的字母数字字符串验证
- javascript - 如何使用 ng-repeat 全屏查看图像?
- android - 单击 MenuItem,应用程序不断停止