javascript - 在循环内重新声明块范围的循环变量
问题描述
我最近遇到了一段代码,它让我对在let
循环中用关键字声明的块范围变量感到困惑。
考虑以下代码片段:
for (let i = 0; i < 10; i++) {
let i = 'hello';
console.log(i);
}
变量的重新声明如何在i
这里工作?不过,我不能在同一范围内重新声明块范围的变量。
解决方案
为什么
for(let fn = () => run; fn();) {
let run = false;
}
不行?因为每个循环迭代都有自己的范围,那么run
声明中将引用哪个范围?为了防止这种情况,声明在它们自己的范围内。因此,您无法从头部的正文中访问变量。这在13.7.4.8中指定。
推荐阅读
- r - 使用带有构面的 ggplot2 从 R 创建 html5 交互式绘图(绘图)
- java - 如何为 SpringBoot 2 创建自定义嵌入式 servlet 容器
- docker - 码头工人。如何将参数传递给 FROM 子句?
- c++ - 测试此指针的 const 指针性质
- javascript - 在 android chrome 上移除选定的外部麦克风时,MediaStreamTrack.onended 不会触发
- javascript - 如何在 vex 对话框中显示 XSS 后的原始字符串?
- django - Django:反向OneToOneField匹配没有related_name
- python - 如何在训练和测试阶段使用不同的损失函数
- sql - 更新查询仅使用新值的第一个字母更新数据
- sql-server - 在 SQL Server 中计算剩余天数和从今天起经过的天数