TypeScript中let和var有什么本质区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计717个文字,预计阅读时间需要3分钟。
目录
1.作用域不同
2.let 没有变量提升
3.let 变量不能重复声明
4.for 循环中的 let 与 var
1. 作用域不同 2. 用 var 声明的变量,只有函数作用域和全局作用域 3. 没有 block 级作用域let 可实现作用域封闭
目录
- 1、作用域不同
- 2、let没有变量提升
- 3、let变量不能重复声明
- 4、for循环中的let与var
1、作用域不同
用var声明的变量,只有函数作用域和全局作用域,没有块级作用域。而let可以实现块级作用域,只能在代码块{}内有效,在{}之外不能访问,如下代码所示:
{ let a = 0; var b = 1; } console.log(a) // ReferenceError: a is not defined console.log(b) // 1
2、let没有变量提升
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为:暂时性死区,英文为:temporal dead zone,简称 TDZ。
//报错 console.log(a) let a=10
3、let变量不能重复声明
使用var,多次声明同一个变量,不会报错,只会得到一个变量。
var a=1; var a=2;
上述例子中,所有的a的声明实际上都引用了一个相同的a。在多人开发一个项目时,容易出现问题。
本文共计717个文字,预计阅读时间需要3分钟。
目录
1.作用域不同
2.let 没有变量提升
3.let 变量不能重复声明
4.for 循环中的 let 与 var
1. 作用域不同 2. 用 var 声明的变量,只有函数作用域和全局作用域 3. 没有 block 级作用域let 可实现作用域封闭
目录
- 1、作用域不同
- 2、let没有变量提升
- 3、let变量不能重复声明
- 4、for循环中的let与var
1、作用域不同
用var声明的变量,只有函数作用域和全局作用域,没有块级作用域。而let可以实现块级作用域,只能在代码块{}内有效,在{}之外不能访问,如下代码所示:
{ let a = 0; var b = 1; } console.log(a) // ReferenceError: a is not defined console.log(b) // 1
2、let没有变量提升
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为:暂时性死区,英文为:temporal dead zone,简称 TDZ。
//报错 console.log(a) let a=10
3、let变量不能重复声明
使用var,多次声明同一个变量,不会报错,只会得到一个变量。
var a=1; var a=2;
上述例子中,所有的a的声明实际上都引用了一个相同的a。在多人开发一个项目时,容易出现问题。

