let&const
- var ,let ,const(常量)都可以用来定义变量。
let
- 与var类似,用来定义变量。
区别
- 块级作用域(第三种作用域)。let所声明的变量,只在let命令所在的代码块内有效。
- let没有“变量提升”现象。
- 不会成为window对象的属性
- 暂时性死区(TDZ)
1.拥有块级作用域block
- 在es5中的是没有块级作用域,当时我们只能通过function来划分作用域。在 es6中实现了块级作用域,具体来说,就是通过let关键字实现的。
- 上面的代码中,let 定义的变量只在{ }范围内有效,出了{ }就无效了。也可以去掉if
2.块级作用域
- { }具备划分作用域的能力
3.经典的古老的例子
解决方法:
- 方法一 :自定义属性
- 方法二 :闭包
- 方法三 :let
4.let没有“变量提升”现象
5.不会成为window对象的属性
6.暂时性死区(TDZ)
-
ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
-
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)