TypeScript 学习笔记 —— var, let, const

文章目录

  • 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 相同的作用域规则,但是不能对它们重新赋值

你可能感兴趣的:(TypeScript,typescript,学习,javascript)