文章目录
- 1.相同点
- 2.不同点
- 2.1 var 是函数作用域,let 是块作用域
- 2.2 var 可以声明同名变量,但 let 不可以
- 2.3 let 不能在声明之前访问该变量,但是 var 可以
- 2.4 在嵌套作用域中,let 还具有屏蔽功能
- var
- let
- 3.const
1.相同点
var, let, const 都是 TypeScript 里的变量声明方式
2.不同点
2.1 var 是函数作用域,let 是块作用域
// var 作用域
for(var i = 1; i < 2; i++){}
console.log(i); // 2
// let 作用域
for(let j = 1; j < 2; j++){}
console.log(j); // 报错,找不到名称 j
2.2 var 可以声明同名变量,但 let 不可以
var a = 0; var a = 1; // 不会报错
let b = 0; let b = 1; // 会报错
2.3 let 不能在声明之前访问该变量,但是 var 可以
// var 声明之前访问变量
console.log(a); // undefined
var a = "a";
// let 声明之前访问变量
console.log(b); // 报错
let b = "b";
2.4 在嵌套作用域中,let 还具有屏蔽功能
var
function totalMatrix(matrix: number[][]){
let sum = 0;
for(var i = 0; i < matrix.length; i++){
var curRow = matrix[i];
for(var i = 0; i < curRow.length; i++){
sum += curRow[i];
}
}
return sum; // sum = 6
}
let
function totalMatrix(matrix: number[][]){
let sum = 0;
for(let i = 0; i < matrix.length; i++){
var curRow = matrix[i];
for(let i = 0; i < curRow.length; i++){
sum += curRow[i];
}
}
return sum; // sum = 45
}
3.const
const 拥有与 let 相同的作用域规则,但是不能对它们重新赋值