【发布时间】:2019-02-12 15:26:28
【问题描述】:
我的 JavaScript 书籍“JavaScript The Definitive Guide, 6th Ed.”,第 270 页包含以下文本和代码:
"... 在 for 循环中,初始化表达式被计算 超出新变量的范围”
let x = 1;
for (let x = x + 1; x < 5; x++) {
console.log(x); // prints 2, 3, 4
}
但是,当我运行上述代码(在最新版本的 Chrome 和 FF 中)时,我得到了控制台错误:
ReferenceError: x 未定义
在初始化之前无法访问词法声明 `x'
书上的代码不正确吗? (本书的勘误网站上没有任何内容:这个。)
【问题讨论】:
-
x正在被重新声明,这就是问题所在。 -
@briosheje 不,它不会被重新声明。它被遮住了。
-
@JonasWilms 确实如此。虽然问题仍然存在。它被本地
x变量所遮蔽,对吧? -
@briosheje 问题是试图访问其初始化程序中的变量。引用的段落是错误的。
-
谢谢大家!这对我来说更有意义了。我现在对关键字 let 的行为有了更好的理解!
标签: javascript let