const 变量可以在 while 循环中重新声明,即使它应该是常量
const variable can be redeclared inside while loop even though it should be constant
我是 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
。
const
和 let
同样不能在给定的块调用中重新声明 ,例如:
const test = i;
const test = 10; // re-declaration in the same block; forbidden
但是 运行 再次 整个块 并为在块内声明一次的变量创建另一个绑定并没有错,就像上面的代码片段一样。
我是 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
。
const
和 let
同样不能在给定的块调用中重新声明 ,例如:
const test = i;
const test = 10; // re-declaration in the same block; forbidden
但是 运行 再次 整个块 并为在块内声明一次的变量创建另一个绑定并没有错,就像上面的代码片段一样。