说我有这个:
for(const v of [1,2,3]){
console.log(v);
}
const v = 5;
console.log(v);
是否像let
那样为v创建唯一的本地范围?上面的运行正常。
这失败了,正如我们可能期望的那样:
for(const v of [1,2,3]){
console.log(v);
}
console.log(v); // v is not defined, but if we used var instead of const, it would be defined
答案 0 :(得分:3)
是的-const
是一个块范围常量声明关键字,这意味着在第二个示例中,v
仅在{{1}的{}
内定义}循环。将其更改为具有函数作用域的for
(仅存在于其封闭的函数中)–意味着可以在var
循环外部访问它(因为它不是函数)。
答案 1 :(得分:2)
是的,bot let和const是块作用域的。请参阅this,以清晰了解let和const的范围。