说明
在 ES6 之前,是没有块级作用域
使用 var 关键字声明的变量 不具备块级作用域 的特性,它在 {} 外依然能被访问到。
{
var x = 2;
}
// 这里可以使用 x 变量
console.log(x)
ES6 可以使用 let 关键字实现 块级作用域
可能引发的问题
var i = 5;
for (var i = 0; i < 10; i++) {
}
// 这里输出 i 为 10。这是不合理的,在 for 内定义的变量i,干扰 外部的变量 i
console.log(i)