var 的作用域是函数作用域
let 的作用域是块作用域
例如
let f= function () {
let a = 9;
var b = 9;
if (true)
{
let a = 1;
var b = 1;
}
console.log(a);
console.log(b);
}
f();
运行结果
实际上,上述 typescript 代码编译成 javascript 后的结果如下
var f = function () {
var a = 9;
var b = 9;
if (true) {
var a_1 = 1;
var b = 1;
}
console.log(a);
console.log(b);
};
f();
可以看到,if 代码块中用 let 关键字定义的变量 a 编译后是生成了另一个变量 a_1