ES6之前的语法:
if (true) {
var foo = 1;
}
console.log(foo); // 1
{}外部可以获取到变量foo。
ES6 let声明变量及块级作用域:
if (true) {
let foo = 1;
}
console.log(foo); // ReferenceError: foo is not defined
上面的代码中{}外部并不能获取到使用let声明的变量foo,在块级作用域内则可以正常获取变量:
if (true) {
let foo = 1;
console.log(foo); // 1
}