ES6必知必会(一):let&const

199 阅读2分钟

1.基本介绍

ES6的全称是ECMAScript6.0

ECMAScript6.0是JavaScript语言的一个标准,于2015年6月正式发布。目标是“使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

2.为什么要学习ES6

ES6的出现,给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。流行的js框架都使用了大量的ES6语法。

3.let和const

var,let,const(常量)都可以用来定义变量。

3-1 let变量

与var类似,用来定义变量。

区别:

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

3-1-1

在ES5中没有块级作用域,只能通过function来划分作用域。在ES6中实现了块级作用域,具体来说,就是通过let关键字实现的。

在这段代码中,let定义的变量a只在{}范围内有效,在{}外面就无效了。

3-1-2

{}具有划分作用域的能力

经典例子

解决方法一:自定义属性

解决方法二:闭包

解决方法三:let

3-1-3 let没有“变量提升”现象

3-1-4 不会成为window对象的属性

3-1-5 暂时性死区(TDZ)

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

3-1-6 不能重复定义

3-2 const常量

3-2-1 const声明常量,栈区的值不能改变。

3-2-2 必须立即初始化

3-3-3 栈区的值不能改动,保存至堆区的值可以改动