[英]Why are 'constant' variable inside loop are not reassigned in JavaScript?
为什么在循环内声明的const变量不会在 JavaScript 中引发重新声明错误
例子
for (let i = 1; i<5; i++) {
const z = 'dwan';
}
在第二次迭代中,即当i = 2
z将在同一范围内再次重新分配时,这应该会引发错误,但不会?。
我错在哪里?
因为它是不同的z
,不是同一个。 如果你编写一个关闭它的函数,你会看到它是不同的:
for (let i = 1; i<5; i++) { const z = 'dwan' + i; setTimeout(() => { console.log(z); }, i * 200); }
每个循环迭代都有自己的执行上下文,其中包含在循环体内使用现代构造( let
、 const
、 class
)声明的任何变量/常量。
如果你在循环块之外声明了z
,所以只有一个z
,你是对的,重新分配会失败:
const z = 'dwan0'; for (let i = 1; i<5; i++) { z = 'dwan' + i; // <=== Fails here setTimeout(() => { console.log(z); }, i * 200); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.