var a = 5;
var b = 10;
if (a === 5) {
let a = 4; // if 块级作用域
var b = 1; // 函数级作用域,这里是if块,非函数
console.log(a); // 4
console.log(b); // 1
}
console.log(a); // 5
console.log(b); // 1
var声明的变量是函数级的或者是全局的,而let用于声明块级作用域。
在函数或程序顶层使用时,let与var没有什么区别:
var x = 'global';
let y = 'global';
console.log(this.x); // 'global'
console.log(this.y); // 'global'