let&const

185 阅读1分钟

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)

7.不能重复定义