【发布时间】:2019-09-27 06:09:28
【问题描述】:
我了解在typescript/javascript 中使用var 和for 循环中的var 和let 的行为,但有人可以解释为什么以及如何将const 变量作为循环变量的行为?
for (const i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i)
}, 100 * i);
}
据我了解,当您将变量声明为const 并初始化其值时,该值无法更改
但是您可以看到 console.log() 中的值正在更改。编译时必须抛出错误吗?我在这里缺少什么?
我为此行为创建了 2 个示例。
有人可以帮助我理解这一点吗?
【问题讨论】:
-
const和let都具有块作用域,并在其定义的块的顶部提升,const和let之间的唯一区别是声明的变量const不能重新初始化 -
请在问题本身中包含所有代码,而不仅仅是在外部网站上。
-
@messerbill 一个真正的 ES2015 环境确实有常量。
-
@HereticMonkey 我会包含代码,但如果不是堆栈闪电战示例,我将无法显示该行为。我希望你明白我的意思
-
如果是这样,并且您知道该行为只能在 Stackblitz 中复制,那么您应该在问题中提及这一点。
标签: javascript angular typescript ecmascript-6