一、ES6简介
什么是ES6 ?
ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。
ES6实际上是一个泛指,泛指ES2015及后续的版本。
为什么使用ES6 ?
每一次标准的诞生都意味着语言的完善,功能的加强。JavaScript语言本身 也有一些令人不满意的地方。
● 变量提升特性增加 了程序运行时的不可预测性。
● 语法过于松散,实现相同的功能,不同的人可能会写出不同的代码。
二、ES6的新增语法
2.1、let
ES6中新增的用于声明变量的关键字。
● let声明的变量只在所处于的块级有效
注意:使用let关键字声明的变量才具有块级作用域,使用var声明的变量不具备块级作用域特性。
● 不存在变量提升
● 暂时性死区
报错
经典面试题
输出:
2
2
经典面试题图解:此题的关键点在于变量i是全局的,函数执行时输出的都是全同作用域下的i值。
输出:
0
1
经典面试题图解:此题的关键点在于每次循环都会产性一个块级作用域, 每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的值.
2.2、const
作用:声明常量,常量就是值(内存地址)不能变化的量。
● 具有块级作用域
● 声明常量时必须赋值
● 常量赋值后, 值不能修改。
2.3、let、const, var 的区别
1.使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象。
2.使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升。
3.使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。
2.4、解构赋值
ES6中允许从数组中提取值,按照对应位置,对变量赋值。对象也可以实现解构。
数组解构
如果解构不成功,变量的值为undefined。
对象解构
2.5、箭头函数
ES6新增的定义函数的方式
函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
如果形参只有一个,可以省略小括号
箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this.
返回undefined obj不能产生作用域
2.6、剩余参数
剩余参数语法允许我们将一个不定数量的参数表示为一个数组。
剩余参数和结构函数配合使用