繁体   English   中英

为什么在 JavaScript 中没有重新分配循环内的“常量”变量?

[英]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); }

每个循环迭代都有自己的执行上下文,其中包含在循环体内使用现代构造( letconstclass )声明的任何变量/常量。

如果你在循环块之外声明了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM