const是否像let一样创建本地作用域?

时间:2018-12-06 08:06:05

标签: javascript

说我有这个:

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

2 个答案:

答案 0 :(得分:3)

是的-const是一个块范围常量声明关键字,这意味着在第二个示例中,v仅在{{1}的{}内定义}循环。将其更改为具有函数作用域的for(仅存在于其封闭的函数中)–意味着可以在var循环外部访问它(因为它不是函数)。

答案 1 :(得分:2)

是的,bot let和const是块作用域的。请参阅this,以清晰了解let和const的范围。