前端孵化日记(九)let和const

167 阅读1分钟

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。let 声明的变量只在 let 命令所在的代码块内有效。

let

let与var区别

  • 块级作用域(第三种作用域)。let所声明的变量,只在let命令所在的代码块内有效。
  • let没有“变量提升”现象。
  • 不会成为window对象的属性
  • 暂时性死区(TDZ)

块级作用域

在es5中的是没有块级作用域,当时我们只能通过function来划分作用域。在es6中通过let实现了块级作用域。

let没有“变量提升”现象

不会成为window对象的属性

暂时性死区(TDZ)

ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。要先定义变量,再使用。

let不能重复定义


const

const特点

  • 声明常量。值不能改变。
  • 必须立即初始化
  • 保存的数据在堆区的信息是可以改动的

const值不变

必须立即初始化

保存的数据在堆区的信息是可以改动的