微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

const 变量可以在 while 循环中重新声明,即使它应该是常量

如何解决const 变量可以在 while 循环中重新声明,即使它应该是常量

我是 JavaScript 的新手,遇到过我不太了解的情况: 看看这段代码

let i = 0;
while (i < 4) {
  const test = i;
  console.log(test);
  i++;
}

结果控制台会打印出这样的内容

0,1、 2、 3 . 我认为与 var 关键字相反,不能重新声明带有 const 关键字的变量,但每次循环重新启动时,仍然会再次声明测试变量(不仅更新,而且声明为全新)。 这怎么可能?我认为它与执行上下文或作用域有关,实际上我的测试变量的作用域应该是块(while 循环),但它仍然可以在每次循环时以某种方式重新分配。

解决方法

const 防止变量被重新分配,例如

const test = i;
test = 10; // this would not be allowed

当块再次运行时,它不会阻止变量被重新声明,否则几乎不可能做任何事情:

let i = 0;
function foo() {
  const test = i;
  console.log(test);
  i++;
};

foo();
foo(); // nothing wrong with running a function a second time

一个给定的块可以根据脚本编写者的指示运行多少次。 const 的唯一限制是在给定的块调用中,不能重新分配 const

constlet 同样不能在给定的块调用中重新声明,例如:

const test = i;
const test = 10; // re-declaration in the same block; forbidden

但是再次运行整个块并为在块内声明的变量创建另一个绑定并没有错,就像上面的代码片段一样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。