在TypeScript中,变量用var、let来声明,常量用const来声明。下面来看一下三者之间的区别与联系。
相对于JavaScript而言,在TypeScript中多了let、const,用来弥补var的缺陷。const是对let的一个增强,不允许对一个变量再次赋值,一般用于常量。
三者的作用域如下:
● 使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升(3.2.3节将介绍“变量提升”)。
● 使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
● 使用const一般声明的是常量,在后面出现的代码中不能再修改该常量的值。
const用于声明常量。所谓常量,是相对于变量而言的。变量在赋值之后可以被修改,而常量则不能被修改。
观察下面的例子。
代码 3-1 type/variable/constant-scope.ts
在上面的代码中,定义了一个常量x及一个变量y,并试图改变它们的值。编译时报如下错误:
这意味着,当试图修改常量的值时,编译器是不允许的。
通过下面这个例子就能理解变量提升。
代码 3-2 type/variable/variable-scope.ts
输出的结果如下:
var所定义的变量在方法体中被重新定义和修改了,这就是变量提升。而let所定义的变量并未受到方法体中变量的影响,输出的仍然是最初定义的值。
提示:
在大型项目里,由于.ts文件众多,且文件之间存在着相互引用,为了防止变量误用导致不可预估的结果,尽量采用let和const代替var。